Даты с Oracle - PullRequest
       7

Даты с Oracle

2 голосов
/ 23 мая 2011

Я использую Oracle 10g express.

Я пишу этот порядок SQL:

INSERT INTO compte_courant (num_compte_courant, num_client, libelle_compte_courant, solde_compte_courant, decouvert_compte_courant, taux_agios_compte, date_ouverture_compte_courant, date_fermeture_compte_courant, etat_compte_courant) VALUES
('0001A1234', S_CLIENT.CURRVAL, 'compte courant', 1000.00, -300, 5.2, TO_DATE('01/01/2011', 'DD/MM/YYYY'), NULL, 'open');

Когда я смотрю в таблицу compte_courant.это то, что я вижу в поле даты: 01/01/11

в хранимой процедуре я пишу:

select TO_DATE(date_operation_transfert, 'DD/MM/YYYY'), TO_DATE(date_valeur_transfert, 'DD/MM/YYYY'), montant_transfert, compte_cible
  from transfert
  where compte_cible = numAccount
  order by date_operation_transfert desc;

На стороне Java, когда я читаю свой ResultSet, у меня есть: Январь 01, 0011

Как это могло быть?Все, что я хочу, - это чтобы Oracle сохранил дату, как я просил: ДД / ММ / ГГГГ

Спасибо за вашу помощь

Ответы [ 2 ]

3 голосов
/ 23 мая 2011

Вы не должны применять функцию TO_DATE в вашем SELECT, поскольку значения уже являются датами. Чтобы преобразовать их в строки, используйте TO_CHAR.

Когда вы выбираете TO_DATE (datevalue), Oracle обнаруживает, что TO_DATE требует строковый аргумент, поэтому он неявно использует TO_CHAR (datevalue), чтобы заставить его работать. Неявный TO_CHAR использует маску формата по умолчанию, которая часто пропускает столетие.

1 голос
/ 24 мая 2011

Если вы действительно хотите, чтобы Oracle сохранил дату «как вы ее просили», то вы имеете дело с строкой, а не с датой. Однако, если это дата, я рекомендую хранить ее как дату.

Oracle хранит даты в едином внутреннем формате данных - когда вы запрашиваете дату, она форматирует ее для отображения в соответствии с предоставленным форматом даты. Ваш Java-клиент просто использует другой формат даты.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...