FirebirdSQL logo

Примеры DATEADD

Example 1. Использование функции DATEADD
DATEADD (28 DAY TO CURRENT_DATE)
DATEADD (-6 HOUR TO CURRENT_TIME)
DATEADD (MONTH, 9, DATEOFCONCEPTION)
DATEADD (-38 WEEK TO DATEOFBIRTH)
DATEADD (MINUTE, 90, CAST('NOW' AS TIME))
DATEADD (? YEAR TO DATE '11-SEP-1973')
SELECT
  CAST(DATEADD(-1 * EXTRACT(MILLISECOND FROM ts) MILLISECOND TO ts) AS VARCHAR(30)) AS t,
  EXTRACT(MILLISECOND FROM ts) AS ms
FROM (
    SELECT TIMESTAMP'2014-06-09 13:50:17.4971' as ts
    FROM RDB$DATABASE
) a
T                             MS
------------------------------------
2014-06-09 13:50:17.0000	497.1

DATEDIFF()

Доступно в

DSQL, PSQL

Синтаксис
DATEDIFF (<args>)

<args> ::= <unit> FROM <moment_1> TO <moment_2>
         | <unit>, <moment_1>, <moment_2>

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

unit

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

monent_1

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

monent_2

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

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

BIGINT

Функция DATEDIFF возвращает количество лет, месяцев, недель, дней, часов, минут, секунд или миллисекунд между двумя значениями даты/времени.

Особенности использования:

  • Параметры DATE и TIMESTAMP могут использоваться совместно. Совместное использование типа TIME с типами DATE и TIMESTAMP не разрешается;

  • С аргументом типа TIMESTAMP и DATE можно использовать любую составляющую даты/времени <unit>;

  • Для типа данных TIME разрешается использовать только HOUR, MINUTE, SECOND и MILLISECOND.

Note
  • Функция DATEDIFF не проверяет разницу в более мелких составляющих даты/времени, чем задана в первом аргументе <unit>. В результате получаем:

    • DATEDIFF (YEAR, DATE '1-JAN-2009', DATE '31-DEC-2009') вернёт 0, но

    • DATEDIFF (YEAR, DATE '31-DEC-2009', DATE '1-JAN-2010') вернёт 1

  • Однако для более мелких составляющих даты/времени имеем:

    • DATEDIFF (DAY, DATE '26-JUN-1908', DATE '11-SEP-1973') вернёт 23818

    • DATEDIFF (DAY, DATE '30-NOV-1971', DATE '8-JAN-1972') вернёт 39

  • Отрицательное значение функции говорит о том, что дата/время в moment_2 меньше, чем в moment_1.