FirebirdSQL logo

Примеры DATEDIFF

Example 1. Использование функции DATEDIFF
DATEDIFF (HOUR FROM CURRENT_TIMESTAMP TO TIMESTAMP '12-JUN-2059 06:00')
DATEDIFF (MINUTE FROM TIME '0:00' TO CURRENT_TIME)
DATEDIFF (MONTH, CURRENT_DATE, DATE '1-1-1900')
DATEDIFF (DAY FROM CURRENT_DATE TO CAST (? AS DATE))

EXTRACT()

Доступно в

DSQL, PSQL

Синтаксис
EXTRACT (<part> FROM <datetime>)

<part> ::=
    YEAR | QUARTER | MONTH | WEEK | DAY | WEEKDAY | YEARDAY
  | HOUR | MINUTE | SECOND | MILLISECOND
  | TIMEZONE_HOUR | TIMEZONE_MINUTE
Table 1. Параметры функции EXTRACT
Параметр Описание

part

Составляющая даты/времени.

datetime

Выражение типа DATE, TIME или TIMESTAMP.

Тип возвращаемого результата:

SMALLINT или NUNERIC

Функция EXTRACT извлекает составляющие даты и времени из типов данных DATE, TIME и TIMESTAMP.

Table 2. Типы и диапазоны результатов функции EXTRACT
Составляющая даты/времени Тип Диапазон Комментарий

YEAR

SMALLINT

1–9999

Год

QUARTER

SMALLINT

1-4

Квартал

MONTH

SMALLINT

1–12

Месяц

WEEK

SMALLINT

1–53

Номер недели в году

DAY

SMALLINT

1–31

День

WEEKDAY

SMALLINT

0–6

День недели. 0 — Воскресенье

YEARDAY

SMALLINT

0–365

Номер дня в году. 0 = 1 января

HOUR

SMALLINT

0–23

Часы

MINUTE

SMALLINT

0–59

Минуты

SECOND

NUMERIC(9,4)

0.0000–59.9999

Секунды. Включает в себя миллисекунды

MILLISECOND

NUMERIC(9,1)

0.0–999.9

Миллисекунды

TIMEZONE_HOUR

SMALLINT

от -14 до +14

Смещение часов часового пояса

TIMEZONE_MINUTE

SMALLINT

от -59 до +59

Смещение минут часового пояса

Note

Если составляющая даты/времени не присутствует в аргументе дата/время, например SECOND в аргументе с типом DATE или YEAR в TIME, то функция вызовет ошибку.

Из аргумента с типом данных DATE или TIMESTAMP можно извлекать номер недели.В соответствии со стандартом ISO-8601 неделя начинается с понедельника и всегда включает в себя 7 дней.Первой неделей года является первая неделя, у которой в ней больше дней в новом году (по крайней мере, 4): дни 1-3 могут принадлежать предыдущей неделе (52 или 53) прошлого года.По аналогии дни 1-3 текущего года могут принадлежать 1 неделе следующего года.

Example 1. Использование функции EXTRACT
/* получить по дате номер квартала */
SELECT (EXTRACT(MONTH FROM CURRENT_TIMESTAMP)-1)/3+1
FROM RDB$DATABASE