Oracle получить месяц из даты

Oracle получить месяц из даты

Как получить имя месяца из заданной даты в Oracle?

Если заданная дата ’15-11-2010′ затем я хочу!—1—> С этой даты.

5 ответов

в вашем примере будет:

to_char(mydate, ‘MONTH’) сделает работу.

в базе данных Oracle (по крайней мере 11g):

Если вы нажмете

Он дает неформатированное имя месяца с пробелами, например, может быть дано как "Май". Строка может иметь пробелы.

для форматирования названия месяца, i.e чтобы обрезать пробелы, вам нужно

Если вы пытаетесь вытащить значение из поля, вы можете использовать:

вы также можете вставить день или год для значения извлечения "месяц" выше.

Базы данных

В этом учебном пособии вы узнаете, как использовать Oracle/PLSQL функцию EXTRACT с синтаксисом и примерами.

Описание

Oracle/PLSQL функция EXTRACT извлекает значение из даты или значения интервала.

Синтаксис

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

Примечание

  • Функция EXTRACT возвращает numeric значение, когда предоставляются следующие параметры: YEAR, MONTH, DAY, HOUR, MINUTE, SECOND, TIMEZONE_HOUR, TIMEZONE_MINUTE, TIMEZONE_REGION, TIMEZONE_MINUTE.
  • Функция EXTRACT возвращает VARCHAR2, когда предоставляются параметры TIMEZONE_REGION или TIMEZONE_ABBR (поскольку возвращается имя часового пояса или информация об аббревиатуре).
  • Вы можете извлечь только YEAR, MONTH, и DAY из даты.
  • Вы можете извлечь только TIMEZONE_HOUR и TIMEZONE_MINUTE из даты/времени с типом данных часового пояса.

Применение

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

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

Пример

Рассмотрим несколько примеров функции EXTRACT и изучим, как использовать функцию EXTRACT в Oracle/PLSQL.

Oracle реализует набор функций для работы со значениями типа даты/времени. Мы не будем подробно рассматривать все функции, но сводка в табл. 1 познакомит Вас с доступными возможностями. Если какие-то функции вас заинтересуют, обращайтесь за подробным описанием к справочнику Oracle SQL Reference.

Читайте также:  Безопасность в интернете xbox one windows 10

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

Многие из приведенных в табл. 1 функций (в том числе ADD_MONTHS ) получают значения типа DATE . При использовании таких функций с новыми типами данных TIMESTAMP могут возникнуть проблемы. Хотя любой из этих функций можно передать значение типа TIMESTAMP , Oracle неявно преобразует его к типу DATE , и только тогда функция выполнит свою задачу, например:

Имя
Описание
ADD_MONTHS Возвращает значение DATE , полученное в результате увеличения заданного значения DATE на заданное количество месяцев. См. «Сложение и вычитание интервалов»
CAST Выполняет преобразования между типами данных — например, между DATE и различными значениями TIMESTAMP . См. « CAST и EXTRACT »
CURRENT_DATE Возвращает текущую дату и время в часовом поясе сеанса как значение типа DATE
CURRENT_TIMESTAMP Возвращает текущую дату и время в часовом поясе сеанса как значение типа TIMESTAMP WITH TIME ZONE
DBTIMEZONE Возвращает смещение часового пояса базы данных относительно UTC в форме символьной строки (например, ‘-05:00’). Часовой пояс базы данных используется только при работе со значениями типа TIMESTAMP WITH LOCAL TIME ZONE
EXTRACT Возвращает значение NUMBER или VARCHAR2 , содержащее конкретный элемент даты/времени — час, год или сокращение часового пояса. См. « CAST и EXTRACT »
FROM_TZ Преобразует TIMESTAMP и данные часового пояса в значение типа TIMESTAMP WITH TIME ZONE
LAST_DAY Возвращает последний день месяца для заданного входного значения DATE
LOCALTIMESTAMP Возвращает текущую дату и время как значение типа TIMESTAMP в локальном часовом поясе
MONTHS_ BETWEEN Возвращает значение NUMBER , содержащее количество месяцев между двумя датами. См. «Вычисление интервала между двумя значениями DATE »
NEW_TIME Преобразует значение типа DATE одного часового пояса в аналогичное значение другого пояса. Функция существует для сохранения совместимости со старым кодом; в новых приложениях следует использовать типы TIMESTAMP WITH TIME ZONE или TIMESTAMP WITH LOCAL TIME ZONE
NEXT_DAY Возвращает дату первого дня недели, следующего за указанной датой
NUMTODSINTERVAL Преобразует заданное количество дней, часов, минут или секунд (на ваш выбор) в значение типа INTERVAL DAY TO SECOND
NUMTOYMINTERVAL Преобразует заданное количество годов и месяцев (на ваш выбор) в значение типа INTERVAL YEAR TO MONTH
ROUND Возвращает значение типа DATE , округленное до заданных единиц
SESSIONTIMEZONE Возвращает смещение часового пояса сеанса (относительно UTC) в форме символьной строки
SYS_EXTRACT_UTC Преобразует значение типа TIMESTAMP WITH TIME ZONE в значение TIMESTAMP с той же датой и временем, нормализованное по времени UTC
SYSDATE Возвращает текущую дату и время сервера Oracle как значение типа DATE
SYSTIMESTAMP Возвращает текущую дату и время сервера Oracle как значение типа TIMESTAMP WITH TIME ZONE
TO_CHAR Преобразует значение даты/времени в символьную строку. См. «Преобразование даты и времени»
TO_DATE Преобразует символьную строку в значение типа DATE . См. «Преобразование даты и времени»
TO_DSINTERVAL Преобразует символьную строку в значение типа INTERVAL DAY TO SECOND . См. «Преобразования интервалов»
TO_TIMESTAMP Преобразует символьную строку в значение типа TIMESTAMP . См. «Преобразование даты и времени»
TO_TIMESTAMP_TZ Преобразует символьную строку в значение типа TIMESTAMP WITH TIME ZONE . См. «Преобразование даты и времени»
TO_YMINTERVAL Преобразует символьную строку в значение типа INTERVAL YEAR TO MONTH . См. «Преобразования интервалов»
TRUNC Возвращает значение типа DATE , усеченное до заданных единиц
TZ_OFFSET Возвращает смещение относительно UTC часового пояса, заданного названием или сокращением, в форме VARCHAR2 (например, ‘-05:00’)
Читайте также:  Бьет разбор слова по звукам и буквам

В этом примере переменная ts содержит значение типа TIMESTAMP WITH TIME ZONE . Это значение неявно преобразуется в DATE при передаче LAST_DAY . Поскольку в типе DATE не сохраняются ни дробные части секунд, ни смещение часового пояса, эти части значения ts попросту отбрасываются. Результат LAST_DAY снова присваивается ts , что приводит к выполнению второго неявного преобразования — на этот раз DATE преобразуется в TIMESTAMP WITH TIME ZONE . Второе преобразование получает часовой пояс сеанса, поэтому в смещении часового пояса в итоговом значении мы видим ?05:00.

Очень важно понимать эти преобразования. и избегать их. Несомненно, вы представляете, какие коварные ошибки могут появиться в программе из-за неосторожного использования функций DATE со значениями TIMESTAMP . Честно говоря, я не представляю, почему в Oracle встроенные функции DATE не были перегружены для нормальной работы с TIMESTAMP . Будьте осторожны!

«>

Ссылка на основную публикацию
Adblock detector