Всегда ли в Oracle "date '[yyyy-mm-dd]" "всегда используется шаблон yyyy-mm-dd? - PullRequest
7 голосов
/ 06 октября 2011

Перефразировано, учитывая, что я использую дату следующим образом:

date'2010-04-10'

, может ли быть результат, кроме 10 апреля 2010 г. (например, 4 октября 2010 г.)?

ОБНОВЛЕНИЕ Я слышу, что вы, и документы, говорите. Но ...

Когда запускается пакетное задание с жестко заданными датами 'yyyyy-mm-dd': s, оно не выполняется для некоторых (недетерминированных) вычислений. Выполнение ошибочных операторов SQL в PL / SQL Developer never приводит к тому же неверному значению.

Сначала я выполнил те же вычисления (сотни тысяч), заменив литералы даты '' датой на функцию to_date ('', ''), и все работало просто отлично.

Затем я использовал NHibernate и его поставщика LINQ и полностью заменил созданный вручную SQL. ... и все работало просто отлично ... NHibernate выдает '' литерал даты, с включенной временной частью, BTW.

ОБНОВЛЕНИЕ Мой коллега написал некоторый код, который может воспроизвести ошибку в нашей среде. Свои выводы (включая код) он опубликовал на форумах Oracle: https://forums.oracle.com/forums/thread.jspa?threadID=2304569&tstart=0

ОБНОВЛЕНИЕ Изменено название в соответствии с ответом zerkms.

Ответы [ 2 ]

13 голосов
/ 06 октября 2011

Это не функция , а литерал даты .И да, он всегда соответствует YYYY-MM-DD независимо от настроек оракула. ​​

10 голосов
/ 06 октября 2011

Вот ссылка на ссылку Oracle 10g SQL, на литералы даты и времени . Выдержки:

Литерал даты ANSI не содержит временной части и должен быть указан именно в этом формате ('YYYY-MM-DD'). В качестве альтернативы вы можете указать значение даты Oracle, как в следующем примере:

TO_DATE('98-DEC-25 17:30','YY-MON-DD HH24:MI')

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