Базы данных

Функции работы с датой и временем

M0NTHS_BETWEEN('12.09.2006', '2.05.2006') 62, M0NTHS_BETWEEN('2.05.2006', '12.09.2006') d3 FROM dual

D1

D2

D3

4

4,32258064516129

-4,32258064516129

Функция TRUNC(d[,mask])

Производит усечение указанной даты в соответствии с маской. Если маска не указана, то усечение производится до даты (время отбрасывается).

Пример:

SELECT SYSDATE dl,

TRUNC(SYSDATE) d2 FROM dual

Dl                                      D2

26.09.2006 16:45:26       26.09.2006

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

SELECT SYSDATE dl,

TRUNC(SYSDATE,    'HH24')   6.2,

TRUNC(SYSDATE,    'DD')       d3,

TRUNC(SYSDATE,    'MM')       d4,

TRUNC(SYSDATE,    'YYYY')   d5FROM dual

~D1                              D2                              D3              D4              D5

26.09.2006 16:49:21    26.09.2006 16:00:00   26.09.2006 01.09.2006 01.01.2006

Функция ROUND(d[,mask])

Функция ROUND аналогична TRUNC, но вместо усечения она производит округление. Форматная маска по умолчанию равна «DD». Пример:

SELECT SYSDATE dl,

ROUND(SYSDATE) d2,

ROUND(SYSDATE, 'НН24')   d3,

ROUND(SYSDATE, 'DD')   d4,

ROUND(SYSDATE, 'MM') d5FROM dual

Dl D2 D3 D4 D5

26.09.2006 16:50:50   27.09.2006 26.09.2006 17:00:00   27.09.2006 01.10.2006

Форматные маски, допустимые для функций TRUNC и ROUND

Рассмотрим подробнее форматные маски и особенности их применения:

Маска

Назначение

СС

Первый день столетия

YEAR,    или    YYYY,

или YY, или Y

Первый день года

Q

Первый день квартала

MONTH,   или   MON,

или ММ

Первый день месяца

WW

Тот же день недели, что и первый день текущего года

W

Тот же день недели, что и первый день текущего месяца

DDD или DD

День

DAY, или DY, или D

Первый день недели

НН,   или   НН12,   или НН24

Час

Ml

Минута

Функция TO_DATE(str[,mask [,nls_lang]])

предыдущаяследующая