Как мы узнаем, имеет ли данный двухзначный код года (YY) 19XX или 20XX? Например, если мы наберем 07-apr-10
, то будет 10
год 1910
или 2010
?oracle 11g date function related -
ответ
РЕДАКТИРОВАТЬ: Извините, что мой клиент установил только YY. После добавления YYYY я получаю результаты ниже. Так выглядит по умолчанию YY принимает 20YY
select to_date('7/10/15','DD/MM/YY') from dual;
07-OCT-2015
select to_date('7/10/15','DD/MM/YYYY') from dual;
07-OCT-0015
Они могут быть не такими же, потому что ваш клиент SQL скрывает от вас весь год, поэтому вы не можете сказать, одинаковы ли они. –
Повторим эксперимент с экстрактом (год от to_date()) – borjab
Да. Виноват. Я изменил настройку. Второй запрос задает год как 0015. Редактирование ответа. Спасибо за подсказку с клиентом. – Utsav
Чтобы проверить это:
Прежде всего, вам нужно преобразовать CHAR с форматом YY года в дату:
TO_DATE('20-01-15','DD-MM-YY');
и после этого немедленно преобразуйте его обратно в CHAR и см. вывод, как показано ниже:
SELECT TO_CHAR(TO_DATE('20-01-15','DD-MM-YY'),'YYYY') FROM DUAL;
вы ...: -) @ Andrei Amarfia –
Вообще говоря, вы должны быть u петь RR
datetime format element, чтобы преобразовать двузначные годы в полные годы.
Если указанный две цифры года от 00 до 49, а затем
- Если последние две цифры текущего года являются 00 до 49, то возвращаемая год имеет те же первые две цифры, как в текущем году.
- Если последние две цифры текущего года составляют от 50 до 99, то первые 2 цифры возвращенного года на 1 больше, чем первые 2 цифры текущего года.
Если указанный двузначный год составляет от 50 до 99, а затем
- Если последние две цифры текущего года являются 00 до 49, то первые 2 цифры возвращенного года являются: 1 меньше первых двух цифр текущего года.
- Если последние две цифры текущего года составляют от 50 до 99, тогда возвращенный год имеет те же первые две цифры, что и в текущем году.
Я не думаю, что вы хотите YY
, так как она всегда заполняет недостающие цифры с единицами из текущего года. Например:
SELECT TO_CHAR(TO_DATE('98', 'YY'), 'YYYY') FROM dual; -- returns 2098, not 1998
SELECT TO_CHAR(TO_DATE('9', 'Y'), 'YYYY') FROM dual; -- returns 2019
SELECT TO_CHAR(TO_DATE('98', 'RR'), 'YYYY') FROM dual; -- returns 1998 (until we get to 2050)
вы .... @ Stuart Caie –
- 1. Oracle 11g: сравнить DATE
- 2. sql date related query
- 3. update date date function
- 4. Oracle date date date
- 5. Oracle 11g Aggregating Rows
- 6. нужны ВСТАВИТЬ запрашивать значения столбцов DATE в Oracle 11G
- 7. Десятичная проблема (Oracle 11G)
- 8. Oracle TO_DATE function
- 9. Execute Immediate в Oracle 11g
- 10. Уникальные строки в Oracle 11g
- 11. oracle 11g - sql plus не открывается после установки oracle 11g
- 12. JQuery toggle() function: switch related img src
- 13. Задержка времени в Oracle 11g
- 14. Анализ журнала таблицы - Oracle 11g
- 15. Сводная таблица в Oracle 11g
- 16. Сравнение даты в Oracle 11g
- 17. Data Guard Oracle 11g
- 18. Xml in oracle 11g
- 19. синтаксического анализа Oracle 11g
- 20. Хитрое агрегирование Oracle 11G
- 21. XMLTable с Oracle 11g
- 22. .net с Oracle 11g
- 23. TIMESTAMPDIFF в Oracle 11g?
- 24. ODP.net и Oracle 11g
- 25. Oracle Экспресс команда 11g
- 26. Oracle 11g VARRAY ОБЪЕКТОВ
- 27. Oracle 11g IMP функциональность
- 28. Oracle 11g: Ограничение ограничения
- 29. Oracle 11g - sys_refcursor
- 30. edition $ в Oracle 11g
http://docs.oracle.com/cd/E11882_01/server.112/e41084/sql_elements003.htm#SQLRF51062 и http://docs.oracle.com/cd/E11882_01/server .112/e10729/ch3globenv.htm # NLSPG202 и http://docs.oracle.com/cd/E11882_01/server.112/e41084/sql_elements004.htm#SQLRF51076 –
Вы никогда не узнаете наверняка. Получите того, кто предоставил вам данные, чтобы они были явными. – Ben
Я с Беном здесь. 07-apr-10 также может означать 07-apr-1710 в зависимости от контекста. Это не имеет никакого отношения к базам данных. Итак, да, спросите ту, для которой вы даете даты, для правил о том, как интерпретировать даты. –