Воскресенье
20.09.2020
06:28


Форма входа


Приветствую Вас Гость | RSS
Статьи по ORACLE, PL/SQL, Java и немного по SHELL (BASH),...
Главная Каталог статей Регистрация Вход
Главная » Статьи » ORACLE » Встроенные функции SQL

Функции работы с датой/временем
Функция SYSDATE
Функция SYSDATE возвращает текущую дату и время по часам сервера.

Пример:
SELECT SYSDATE FROM dual;

Функция ADD_MONTHS(d, x)
Возвращает дату, полученную в результате прибавления к дате d одного или нескольких месяцев. Количество месяцев задается параметров x, причем x может быть отрицательным — в этом случае указанное количество месяцев вычитается из заданной даты.

Пример:
SELECT SYSDATE d, ADD_MONTHS (SYSDATE, 5) d1, ADD_MONTHS (SYSDATE, -5) d2 FROM dual;

Функция LAST_DAY(d)
Возвращает последнее число месяца, указанного в дате d.

Пример:
SELECT SYSDATE d, LAST_DAY (SYSDATE) d1 FROM dual;

Функция MONTHS_BETWEEN(d1, d2)
Функция MONTHS_BETWEEN возвращает количество месяцев между двумя датами d1 и d2 с учетом знака как d1-d2, возвращаемое число является дробным.

SELECT MONTHS_BETWEEN ('2.09.2011', '2.05.2010') d1, MONTHS_BETWEEN ('12.09.2017', '2.05.2012') d2, MONTHS_BETWEEN ('2.05.2018', '12.09.2015') d3
FROM dual;

d1 d2               d3
------------------------------------
16 64.3225806451613 31.6774193548387

Функция TRUNC(d[,mask])
Производит усечение указанной даты в соответствии с маской. Если маска не указана, то усечение производится до даты (время отбрасывается).

Пример:
SELECT SYSDATE d1, TRUNC (SYSDATE) d2 FROM dual;

Усечение даты до часов, дней, месяца и года. Форматная маска по умолчанию равна «DD»

SELECT SYSDATE d1,
       TRUNC (SYSDATE, 'HH24') d2,
       TRUNC (SYSDATE, 'DD') d3,
       TRUNC (SYSDATE, 'MM') d4,
       TRUNC (SYSDATE, 'YYYY') d5
FROM dual;

Функция ROUND(d[,mask])
Функция ROUND аналогична TRUNC, но вместо усечения она производит округление.  Форматная маска по умолчанию равна 'DD'.

Пример:
SELECT SYSDATE d1,
       ROUND (SYSDATE) d2,
       ROUND (SYSDATE, 'HH24') d3,
       ROUND (SYSDATE, 'DD') d4,
       ROUND (SYSDATE, 'MM') d5,
       ROUND (SYSDATE, 'YYYY') d6
FROM dual;

Форматные маски для функций TRUNC и ROUND:
СС - Первый день столетия
YEAR, YYYY, YY, Y - Первый день года
Q - Первый день квартала
MONTH, MON, MM - Первый день месяца
WW - Тот же день недели, что и первый день текущего года
W - Тот же день недели, что и первый день текущего месяца
DDD, DD - День
DAY, DY, D - Первый день недели
HH, HH12, HH24 - Час
MI - Минута

Функция TO_DATE(str[,mask [,nls_lang]])
Функция TO_DATE преобразует строку str в дату. Преобразование ведется по маске mask, если она указана. Если маска не указана, то берется маска по умолчанию. В случае указания маски можно указать еще один параметр — язык, используемый при форматировании названий месяцев и дней. В случае ошибки анализа строки str в соответствии с заданной маской возникает исключительная ситуация. Наиболее распространенная ошибка  «ORA-01830: шаблон формата даты завершается перед преобразованием всей строки ввода». Кроме того, нередко встречается ошибка «ORA-01821: формат даты не распознан» — она возникает при указании недопустимой форматной маски.

Пример:
SELECT TO_DATE ('12.09.2006') d FROM dual;

Функция TO_CHAR(d[,mask])
Преобразует дату d в символьную строку в соответствии с заданной маской. В случае указания недопустимой маски возникает исключительная ситуация «ORA-01821: формат даты не распознан».

Пример:
SELECT SYSDATE d1, TO_CHAR (SYSDATE, 'DD.MM.YY HH24:MI') d2 FROM dual;

Форматные маски функции TO_CHAR:

СС - Столетие.
SСС - Столетие, перед датами до нашей эры ставится знак «минус».
YYYY - Год.
SYYYY - Год, перед датами до нашей эры ставится знак «минус».
YYY, YY, Y - Год, последние 3,2 или 1 цифры года.
SYEAR, YEAR - Год, записанный прописью c учетом текущего национального языка.
Q - Номер квартала.
MM - Месяц.
RM - Номер месяца, записанный с имитацией римских цифр при помощи символов X и I.
MONTH - Название месяца прописью.
MON - Название месяца прописью в сокращенном до трех символов виде.
WW - Неделя года.
W - Неделя месяца.
DDD - День года.
DD - День месяца.
D - День недели.
DAY - День недели прописью, при необходимости дополняется до девяти символов пробелами.
DY - День недели прописью, сокращенный до трех символов.
J - Дата юлианского календаря. Является числом дней от 1.01.4712 до нашей эры.
HH24 - Час дня по 24-часовой шкале (0-23).
HH12, HH - Час дня по 12-часовой шкале (1-12).
AM, PM - Вывод признака «до полудня» — AM и «после полудня» — PM. Указание AM и PM в форматной маске равнозначно.
MI - Минуты (0-59).
SS - Секунды (0-59).
SSSSS - Количество секунд после полуночи.
-/.,:; - Знаки пунктуации. Они выводятся в соответствующие места отформатированной даты.
SP - Форматный суффикс. Его добавление к элементу форматной маски, возвращающему число, приводит к форматированию этого числа прописью.
Категория: Встроенные функции SQL | Добавил: Akarak (14.03.2012)
Просмотров: 45315 | Комментарии: 2 | Теги: SYSDATE, TO_CHAR, round, LAST_DAY, TRUNC, ADD_MONTHS, TO_DATE | Рейтинг: 5.0/2
Всего комментариев: 2
0
2 Гость   [Материал]
-- последний день месяца
SELECT LAST_DAY(TRUNC(SYSDATE)) AS lastday FROM dual;
-- первый день месяца
SELECT TRUNC(SYSDATE, 'MONTH') AS firstdayofmonth FROM dual;
-- первый день месяца, другой вариант
SELECT TRUNC(SYSDATE, 'MM') AS firstdayofmonth FROM dual;
-- первый день года
SELECT TRUNC(SYSDATE, 'YEAR') AS firstdayofyear FROM dual;
-- первый день года, другой вариант
SELECT TRUNC(SYSDATE, 'YY') AS firstdayofyear FROM dual;
-- извлечь месяц из даты
SELECT EXTRACT(MONTH FROM SYSDATE) FROM dual;
-- извлечь день из даты
SELECT EXTRACT(DAY FROM SYSDATE) FROM dual;
-- извлечь год из даты
SELECT EXTRACT(YEAR FROM SYSDATE) FROM dual;

0
1 Akarak   [Материал]
SELECT systimestamp,
       CAST(systimestamp AS DATE)
FROM dual

Имя *:
Email *:
Код *:
Меню сайта

Категории раздела
ORACLE, PL/SQL [36]
Скрипты DDL [3]
Скрипты по управлению объектами
Встроенные функции SQL [2]
Встроенные функции SQL

Интересные сайты
  • sql.ru
  • all-oracle.ru
  • oranet.ru
  • oracloid.ru
  • forum.vingrad.ru

  • Статистика

    Онлайн всего: 1
    Гостей: 1
    Пользователей: 0

    Поиск

    Copyright MyCorp © 2020
    Используются технологии uCoz