Формат Oracle to date

Обновлено: 23.11.2024

Функция Oracle TO_DATE — одна из наиболее распространенных и полезных функций обработки строк в Oracle, но она может сбивать с толку.

В этой статье я объясню, как использовать функцию TO_DATE.

Назначение функции Oracle TO_DATE

Функция TO_DATE в Oracle предназначена для преобразования символьного значения в значение даты.

На самом деле он преобразует любое значение с типом данных CHAR, VARCHAR2, NCHAR или NVARCHAR2 в значение с типом данных DATE.

Это значение не преобразуется ни в один из других типов данных даты и времени. Чтобы использовать TO_DATE со временем в целевом значении, необходимо использовать TO_TIMESTAMP, TO_TIMESTAMP_TZ (функции часового пояса), TO_DSINTERVAL или TO_YMINTERVAL (интервальные функции).

Синтаксис

Синтаксис функции Oracle TO_DATE:

TO_DATE( charvalue, [format_mask], [nls_date_language] )

Параметры

  • charvalue (обязательный): это символьное значение или строка, которую необходимо преобразовать в тип данных. Это основные входные данные для функции, и он должен быть одним из строковых типов данных, упомянутых ранее.
  • format_mask (необязательно): это формат входного значения (charvalue). Это используется для определения того, как составляется charvalue, особенно для форматов данных, которые полностью являются числами.
  • nls_date_language (необязательно): это значение используется для определения способа отображения выходного значения.

Маска формата TO_DATE Oracle

Функция Oracle TO_DATE включает "маску формата". Маска формата полезна, поскольку позволяет указать, в каком формате было предоставлено значение даты.

Если, например, у вас есть charvalue '05.02.2017', означает ли это 2 мая или 5 февраля? Результат функции Oracle TO_DATE будет зависеть от указанного вами формата и может быть очевиден в зависимости от того, из какого вы региона.

Чтобы было понятно, нам нужно указать некоторые значения для маски формата как часть функции Oracle TO_DATE.

Год

< td width="99">Г

Месяц

Параметр Пояснение
ГОД Год, написанный полностью словами
ГГГГ 4 цифры года
YYY Последние 3 цифры год
ГГ Последние 2 цифры года
Последняя цифра года
ГГГ Последние 3 цифры года по ISO
IY Последние 2 цифры года по ISO
I Последняя цифра года по стандарту ISO
IYYY 4-значный год, который основан на стандарте ISO
RRRR Этот формат принимает 2-значный год и возвращает 4-значный год. Если предоставленное значение находится в диапазоне от 0 до 49, он вернет год больше или равный 2000. Если предоставленное значение находится в диапазоне от 50 до 99, он вернет год меньше 2000
Параметр Пояснение
Q Квартал года, с 1 по 4. JAN to MAR = 1
MM Месяц с 01 по 12. JAN = 01
MON Сокращенное название месяца.
МЕСЯЦ Название месяца, дополняется пробелами до 9 символов.
RM Римская цифра месяца, от I до XII. JAN = I.

Неделя

Параметр Пояснение
WW Неделя года, от 1 до 53. Неделя 1 начинается в первый день года и продолжается до седьмого дня года .
W Неделя месяца, с 1 по 5. Неделя 1 начинается в первый день месяц и заканчивается седьмым числом.
IW Неделя года, от 1 до 52 или 1 до 53 в соответствии со стандартом ISO.

День

Время

Параметр Пояснение
D День недели, от 1 до 7.
ДЕНЬ Название дня.
ДД День месяц, от 1 до 31.
DDD День года, от 1 до 366.
DY Сокращенное название дня.
J юлианский день, то есть количество дней с 1 января 4712 г. до н.э.
< td width="99">SSSSS
Параметр Пояснение
ЧЧ Час дня, от 1 до 12.
ЧЧ12 Час дня, от 1 до 12.
ЧЧ24 Часы дня, от 0 до 23.
MI Минуты, от 0 до 59
СС Секунда, от 0 до 59
Секунды после полуночи, от 0 до 86399.
FF< /td> Дробные секунды. Здесь используется значение от 1 до 9 после FF, чтобы указать количество цифр в долях секунды (например, FF7)

Индикаторы

< /tr>
Параметр Пояснение
AM, AM, PM или PM Индикатор меридиана
AD или AD индикатор AD
BC или BC Индикатор BC
TZD Информация о переходе на летнее время
TZH Часовой пояс, час.
TZM Часовой пояс минут.
TZR Часовой пояс региона.

Как видите, TO_DATE со временем и датой возможно, и это зависит от предоставленного значения.

Объяснение Oracle NLS_DATE_LANGUAGE

NLS_DATE_LANGUAGE можно указать в функции Oracle TO_DATE, чтобы определить способ отображения даты. Как вы, возможно, знаете, в разных регионах одна и та же дата отображается по-разному:

  • Китай: гггг-мм-дд
  • Великобритания: дд/мм/гггг
  • США: мм/дд/гггг

Чтобы использовать NLS_DATE_LANGUAGE как часть этой функции, вы можете использовать любой язык, указанный в таблице A-1 на странице языка Oracle. Некоторые примеры: американский, английский, французский, немецкий и шведский.

Примеры функции TO_DATE

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

Пример 1. Простой запрос

Этот запрос представляет собой простой запрос TO_DATE без указания форматов. Он предполагает формат по умолчанию для вашей установки Oracle.

">DATE_TEST
" data-sheets-numberformat=" ">16 октября 2013 года

Пример 2 — с форматом

Этот запрос показывает ту же дату, но в указанном формате.

">DATE_TEST
" data-sheets-numberformat=" ">16 октября 2013 года

Пример 3. Другой формат

Этот запрос показывает дату в другом указанном формате, в формате ГГГГ/ММ/ДД.

Даты и время Oracle

Oracle поддерживает как дату, так и время, хотя и отличается от стандарта SQL2. Вместо того, чтобы использовать две отдельные сущности, дату и время, Oracle использует только одну, DATE. Тип DATE хранится в специальном внутреннем формате, который включает не только месяц, день и год, но также
час, минуту и ​​секунду.

Тип DATE используется так же, как и другие встроенные типы, такие как INT . Например, следующая инструкция SQL создает отношение с атрибутом типа DATE :

Формат ДАТЫ

Когда отображается значение DATE, Oracle должен сначала преобразовать это значение из специального внутреннего формата в печатную строку. Преобразование выполняется функцией TO_CHAR в соответствии с форматом DATE. Формат Oracle по умолчанию для DATE — "DD-MON-YY". Таким образом, при выполнении запроса вы увидите что-то вроде: Всякий раз, когда отображается значение DATE, Oracle автоматически вызывает TO_CHAR с форматом DATE по умолчанию. Однако вы можете переопределить поведение по умолчанию, явно вызвав TO_CHAR с вашим собственным форматом DATE. Например, возвращает результат: Общее использование TO_CHAR: где строка может быть сформирована из более чем 40 вариантов. Вот некоторые из наиболее популярных:
, например.
MM Числовой месяц (например, 07 )
MON Сокращенное название месяца (например, JUL)
MONTH Полное название месяца (например, , ИЮЛЬ )
DD День месяца (например,, 24 )
DY Сокращенное название дня (например, FRI )
ГГГГ< /TD> 4-значный год (например, 1998)
ГГ Последние 2 цифры года (например, 98)
RR То же, что и YY , но две цифры «округлены» до года в диапазоне от 1950 до 2049. Таким образом, 06 вместо этого считается 2006 годом. 1906 года
AM (или PM ) Указатель меридиана
ЧЧ< /TD> Час дня ( 1–12 )
ЧЧ24 Час дня ( 0–23 )
MI Минуты (0–59)
SS Секунды (0–59)

Вы только что узнали, как вывести значение DATE с помощью TO_CHAR . А как насчет ввода значения DATE? Это делается с помощью функции TO_DATE, которая преобразует строку в значение DATE, опять же в соответствии с форматом DATE. Обычно вам не нужно явно вызывать TO_DATE: всякий раз, когда Oracle ожидает значение DATE, он автоматически преобразует вашу входную строку, используя TO_DATE, в соответствии с форматом DATE по умолчанию "DD-MON-YY". Например, чтобы вставить кортеж с атрибутом DATE, вы можете просто ввести: В качестве альтернативы вы можете использовать TO_DATE явно: Общее использование TO_DATE: где строка имеет те же параметры, что и в TO_CHAR .

Наконец, вы можете изменить формат DATE по умолчанию в Oracle с "DD-MON-YY" на любой другой, выполнив в sqlplus следующую команду: Изменение действительно только для текущего сеанса sqlplus.

Текущее время

<УЛ>
  • Вы можете использовать двойные кавычки, чтобы сделать имена чувствительными к регистру (по умолчанию SQL нечувствителен к регистру) или ввести пробелы в именах. Oracle будет рассматривать все, что заключено в двойные кавычки, буквально как одно имя. В этом примере, если «Текущее время» не заключено в кавычки, оно будет интерпретировано как два нечувствительных к регистру имени CURRENT и TIME , что на самом деле вызовет синтаксическую ошибку.
  • DUAL — это встроенное отношение в Oracle, которое служит фиктивным отношением для включения в предложение FROM, когда ничего другого не подходит. Например, попробуйте " выбрать 1+2 из двойного; ".
  • Операции DATE

    Вы можете вычесть два значения DATE, и результатом будет число с плавающей запятой, которое представляет собой количество дней между двумя значениями DATE. Как правило, результат может содержать дробь, потому что DATE также имеет компонент времени. По очевидным причинам нельзя складывать, умножать и делить два значения DATE.

    Вы можете добавлять и вычитать константы из значения DATE, и эти числа будут интерпретироваться как количество дней. Например, SYSDATE+1 будет завтра. Вы не можете умножать или делить значения DATE.

    С помощью TO_CHAR строковые операции также можно использовать со значениями DATE. Например, to_char( , 'DD-MON-YY') как '%JUN%' оценивается как true, если это июнь. Первоначально этот документ был написан Кристианом Виджаей для класса CS145 профессора Джеффа Ульмана осенью 1997 года; отредактировано Джуном Яном для класса CS145 профессора Дженнифер Видом весной 1998 г .; дальнейшие изменения профессором Ульманом осенью 1998 г.

    В этом руководстве по Oracle объясняется, как использовать функцию Oracle/PLSQL TO_DATE с синтаксисом и примерами.

    Описание

    Функция Oracle/PLSQL TO_DATE преобразует строку в дату.

    Синтаксис

    Синтаксис функции TO_DATE в Oracle/PLSQL:

    Параметры или аргументы

    Необязательно. Это формат, который будет использоваться для преобразования string1 в дату. Это может быть одно или комбинация следующих значений:

    < td>W
    Параметр Объяснение
    YEAR Год по буквам out
    ГГГГ 4-значный год
    ГГГ
    ГГ
    Y
    Последние 3, 2 или 1 цифра года.
    IYY
    IY
    I
    Последние 3, 2 или 1 цифра года по стандарту ISO.
    IYYY 4-значный год по стандарту ISO стандарт
    RRRR Принимает 2-значный год и возвращает 4-значный год.
    Значение от 0 до 49 возвращает год 20xx.
    Значение от 50 до 99 возвращает год 19xx.
    Q Квартал года (1, 2, 3, 4; JAN-MAR = 1).
    MM Месяц (01-12; JAN = 01).
    MON Сокращенное название месяца.
    MONTH Название месяца, дополненное пробелами до длины 9 символов.
    RM Римская цифра месяца (I-XII; JAN = I).
    WW Неделя года (1-53), где неделя 1 начинается в первый день года и продолжается до седьмого дня года.
    Неделя месяца (1-5), где неделя 1 начинается в первый день месяца и заканчивается седьмого.
    IW Неделя года (1-52 или 1-53) в соответствии со стандартом ISO.
    D День недели (1-7).
    ДЕНЬ Название дня.
    ДД День месяца (1-31).
    ДДД День года (1-366).
    DY Сокращенное название дня.
    J Юлианский день; количество дней с 1 января 4712 г. до н.э.
    ЧЧ Час дня (1-12).
    HH12 Час дня (1-12).
    HH24 Час дня (0 -23).
    MI минуты (0-59).
    SS Секунды (0-59).
    SSSSS Секунды после полуночи (0-86399).
    AM, AM, PM или PM Индикатор меридиана
    AD или AD Индикатор AD
    BC или BC Индикатор BC
    TZD Летнее время Информация. Например, 'PST'
    TZH Час часового пояса.
    TZM Часовой пояс минут.
    TZR Часовой пояс региона.

    Возврат

    Функция TO_DATE возвращает значение даты.

    Применимо к

    Функция TO_DATE может использоваться в следующих версиях Oracle/PLSQL:

    • Oracle 12c, Oracle 11g, Oracle 10g, Oracle 9i, Oracle 8i

    Пример

    Давайте рассмотрим некоторые примеры функций Oracle TO_DATE и узнаем, как использовать функцию TO_DATE в Oracle/PLSQL.

    Вы можете использовать функцию TO_DATE с двойной таблицей следующим образом:

    Это преобразует строковое значение 2015/05/15 8:30:25 в значение даты.

    Операторы UNION, INTERSECT, MINUS и сортировка результатов запроса

    Oracle TO_DATE() с полными примерами

    Функция Oracle DECODE

    Функция Oracle INSTR() с примерами

    Функция Oracle TO_CHAR()

    Числовые функции (математические функции)

    Функции персонажа

    Разные функции

    Агрегированные функции

    Функции даты и времени

    Запросы на присоединение к Oracle

    ГРУППИРОВКА ПО ЗАПРОСАМ, ПОДЗАПРОСЫ

    Функции CUBE, ROLLUP

    Oracle DML (ВСТАВИТЬ, ОБНОВИТЬ, УДАЛИТЬ.)

    DDL Oracle (СОЗДАНИЕ, ИЗМЕНЕНИЕ, УДАЛЕНИЕ)

    ЗАПИСАТЬСЯ, ОТКАТ, ТОЧКА СОХРАНЕНИЯ

    Язык управления данными (GRANT, REVOKE)

    Значения ПО УМОЛЧАНИЮ

    Отключение ограничений

    Отключение и включение

    Проверка различных ограничений

    Просмотреть информацию об ограничениях

    Работа с датами

    Представления Oracle

    Последовательности Oracle

    Синонимы Oracle

    Индексы и кластеры

    Изменение таблиц разделов

    Удаление разделов

    Объединение разделов

    Разделение разделов

    Объединение разделов

    Объекты и типы объектов Oracle

    Функции и операторы даты.

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

    CURRENT_DATE : возвращает текущую дату в часовом поясе сеанса в значении григорианского календаря типа данных
    DATE
    SYSDATE : возвращает текущую дату и время.
    SYSTIMESTAMP: функция SYSTIMESTAMP возвращает системную дату, включая доли секунды и часовой пояс
    базы данных. Тип возвращаемого значения: TIMESTAMP WITH TIME ZONE.

    Пример SYSDATE

    Чтобы увидеть текущую системную дату и время, введите следующий запрос.

    выбрать sysdate из двойного;

    Формат, в котором отображается дата, зависит от параметра NLS_DATE_FORMAT.

    Например, задайте для NLS_DATE_FORMAT следующий формат

    изменить набор сеансов NLS_DATE_FORMAT=’DD-MON-YYYY HH:MIpm’;

    Затем введите следующее утверждение

    выбрать sysdate из двойного;

    Настройка по умолчанию для NLS_DATE_FORMAT: ДД-МЕСЯЦ-ГГ


    CURRENT_DATE Пример

    Чтобы увидеть текущую системную дату и время с часовым поясом, используйте функцию CURRENT_DATE

    ALTER SESSION SET TIME_ZONE = '-4:0';
    ALTER SESSION SET NLS_DATE_FORMAT = 'DD-MON-YYYY HH24:MI:SS';
    SELECT SESSIONTIMEZONE, CURRENT_DATE FROM DUAL;

    ALTER SESSION SET TIME_ZONE = '-7:0';
    ВЫБРАТЬ SESSIONTIMEZONE, CURRENT_DATE FROM DUAL;

    Пример SYSTIMESTAMP

    Чтобы увидеть текущую системную дату и время с долями секунды и часовым поясом, выполните следующее утверждение

    выбрать системную метку из двойного;

    МОДЕЛИ ФОРМАТ ДАТЫ

    Чтобы преобразовать дату в строку другого формата, вы можете использовать функцию TO_CHAR с форматом даты. Например, чтобы увидеть текущий день, вы можете задать следующий запрос

    Выберите to_char(sysdate,’DAY’)"Today" FROM DUAL;

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

    Как и эта модель формата «ДЕНЬ», в Oracle доступно множество других моделей формата даты. В следующей таблице перечислены модели формата даты.

    День недели

    День месяца

    День года

    Полный день для напр. «Понедельник», «Вторник», «Среда»

    День из трех букв напр. «ПН», «ВТ», «ПТ»

    Неделя месяца

    Неделя года

    Месяц двумя цифрами (1 января, 2 февраля,… 12 декабря)

    Месяц тремя символами, такими как "Янв", "Фев", "Апр"

    Полный месяц, например "январь", "февраль", "апрель"

    Месяц латинскими буквами (I–XII, I–январь, II–февраль,…XII–декабрь)

    Квартал месяца

    Последние две цифры года.

    Год в таких словах, как "1999"

    Часы в 12-часовом формате

    Часы в 12-часовом формате

    Часы в 24-часовом формате

    День по юлианскому календарю, т.е. количество дней с 1 января 4712 г. до н.э. по настоящее время

    Если год меньше 50, год считается 21-м веком. Если год больше 50, предполагается, что год указан в 20 веке.

    Возвращает th, st, rd или nd в соответствии с начальным числом, например 1st , 2nd 3rd 4th

    Произносит начальную цифру

    Возвращает AM или PM в зависимости от времени

    Возвращает записанный порядковый номер. Для. Пример первый, четвертый

    Например, чтобы увидеть сегодняшнюю дату в следующем формате

    Пятница, 7 марта 2014 г.

    Дайте следующее утверждение

    выберите to_char(sysdate,'Day, ddth Month, yyyy')"Today" из двойного;

    Например, вы хотите просмотреть даты приема на работу всех сотрудников в следующем формате

    Пятница, 8 августа 2003 г.

    Затем введите следующий запрос.

    выберите to_char(hire_date,'Day, ddth Month, yyyy') из emp;

    TO_DATE Пример

    Функция To_Date используется для преобразования строк в значения даты. Например, вы хотите узнать, каким был день 15 августа 1947 года. Используйте функцию to_date, чтобы сначала преобразовать строку в значение даты, а затем передать это значение в функцию to_char для извлечения дня.

    выберите to_char(to_date('15-aug-1947','dd-mon-yyyy'),'Day')
    из двойного;

    Чтобы узнать, сколько дней прошло с 15 августа 1947 года, выполните следующий запрос

    выберите sysdate-to_date('15-авг-1947','dd-mon-yyyy') из двойного;

    Теперь мы хотим узнать, какая дата наступит через 45 дней

    выберите sysdate+45 из двойного;


    ADD_MONTHS

    Чтобы узнать, какая дата наступит через 6 месяцев, мы можем использовать функцию ADD_MONTHS

    Выберите ADD_MONTHS(SYSDATE,6) из двойного;

    МЕСЯЦА_BETWEEN

    Чтобы узнать, сколько месяцев прошло с определенной даты, используйте функцию MONTHS_BETWEEN.

    Например, чтобы узнать, сколько месяцев прошло с 15 августа 1947 года, введите следующий запрос.

    выберите month_between(sysdate,to_date('15-aug-1947'))
    из двойного;

    Чтобы исключить десятичное значение, используйте функцию усечения

    выберите trunc(months_between(sysdate,to_date('15-aug-1947')))
    из двойного;

    ПОСЛЕДНИЙ_ДЕНЬ

    Чтобы увидеть последнюю дату месяца данной даты, используйте функцию LAST_DAY.

    выберите LAST_DAY(sysdate) из двойного;

    СЛЕДУЮЩИЙ_ДЕНЬ

    Чтобы узнать, когда наступит следующий день, используйте функцию NEXT_DAY.

    Например, чтобы узнать, когда наступит следующая суббота, введите следующий запрос

    выбрать next_day(sysdate) из двойного;

    ИЗВЛЕЧЕНИЕ

    Функция EXTRACT datetime извлекает и возвращает значение указанного поля даты и времени из выражения значения даты и времени или интервала. Когда вы извлекаете TIMEZONE_REGION или TIMEZONE_ABBR (аббревиатуру), возвращаемое значение представляет собой строку, содержащую соответствующее название или аббревиатуру часового пояса

    Синтаксис функции EXTRACT

    ИЗВЛЕЧЕНИЕ (ГОД/МЕСЯЦ/НЕДЕЛЯ/ДЕНЬ/ЧАС/МИНУТА/ЧАСОВОЙ ПОЯС ОТ ДАТЫ)

    Пример
    В следующем примере показано использование функции EXTRACT для извлечения года из текущей даты.

    выберите извлечение (год из sysdate) из двойного;

    Загрузчик данных – это простой, но мощный инструмент для
    экспорта и импорта данных между базами данных многих распространенных форматов

    Инструмент для загрузки данных в Oracle E-Business Suite R12 / Oracle Apps с использованием макросов и форм, записи и воспроизведения

    Читайте также: