Формат 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> | 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. td> |
DY | Сокращенное название дня. |
J | юлианский день, то есть количество дней с 1 января 4712 г. до н.э. тд> |
Параметр | Пояснение |
ЧЧ | Час дня, от 1 до 12. |
ЧЧ12 | Час дня, от 1 до 12. |
ЧЧ24 | Часы дня, от 0 до 23. |
MI | Минуты, от 0 до 59 |
СС | Секунда, от 0 до 59 |
Секунды после полуночи, от 0 до 86399. | |
FF< /td> | Дробные секунды. Здесь используется значение от 1 до 9 после FF, чтобы указать количество цифр в долях секунды (например, FF7) |
Индикаторы
Параметр | Пояснение |
AM, AM, PM или PM | Индикатор меридиана |
AD или AD | индикатор AD |
BC или BC | Индикатор BC |
TZD | Информация о переходе на летнее время |
TZH | Часовой пояс, час. |
TZM | Часовой пояс минут. |
TZR | Часовой пояс региона. | < /tr>
Как видите, 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) TD> |
RR | То же, что и YY , но две цифры «округлены» до года в диапазоне от 1950 до 2049. Таким образом, 06 вместо этого считается 2006 годом. 1906 года | , например.
AM (или PM ) | Указатель меридиана |
ЧЧ< /TD> | Час дня ( 1–12 ) |
ЧЧ24 | Час дня ( 0–23 ) | TR>
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.
Текущее время
<УЛ>Операции 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 в дату. Это может быть одно или комбинация следующих значений:
Параметр | Объяснение |
---|---|
YEAR | Год по буквам out |
ГГГГ | 4-значный год |
ГГГ ГГ Y | Последние 3, 2 или 1 цифра года. |
IYY IY I td> | Последние 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 td> | Секунды (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 с использованием макросов и форм, записи и воспроизведения
Читайте также:
- Как сохранить шрифт в презентации PowerPoint
- Как удалить заголовок слайда в PowerPoint
- Тип биоса insyde uefi bios
- Как удалить файл delphi
- Как воспроизвести объект в фотошопе