Поделиться через


Функции даты, времени и интервалов

В следующей таблице перечислены функции времени и даты, включенные в скалярный набор функций ODBC. Приложение может определить, какие функции времени и даты поддерживаются драйвером, вызвав SQLGetInfo с типом сведений SQL_TIMEDATE_FUNCTIONS.

Аргументы, обозначаемые как timestamp_exp, могут быть именем столбца, результатом другой скалярной функции или параметром ODBC-time-escape, ODBC-date-escape или ODBC-timestamp-escape, где базовый тип данных может быть представлен как SQL_CHAR, SQL_VARCHAR, SQL_TYPE_TIME, SQL_TYPE_DATE или SQL_TYPE_TIMESTAMP.

Аргументы, обозначаемые как date_exp , могут быть именем столбца, результатом другой скалярной функции или odBC-date-escape или ODBC-timestamp-escape, где базовый тип данных может быть представлен как SQL_CHAR, SQL_VARCHAR, SQL_TYPE_DATE или SQL_TYPE_TIMESTAMP.

Аргументы, обозначаемые как time_exp , могут быть именем столбца, результатом другой скалярной функции или экранирования odBC-time-escape или ODBC-timestamp-escape, где базовый тип данных может быть представлен как SQL_CHAR, SQL_VARCHAR, SQL_TYPE_TIME или SQL_TYPE_TIMESTAMP.

В ODBC 3.0 были добавлены скалярные функции CURRENT_DATE, CURRENT_TIME и CURRENT_TIMESTAMP.

Function Description
CURRENT_DATE( ) (ODBC 3.0) Возвращает текущую дату.
CURRENT_TIME[( точность времени)] (ODBC 3.0) Возвращает текущее время. Аргумент точности времени определяет точность секунд возвращаемого значения.
CURRENT_TIMESTAMP
[( точность метки времени)] (ODBC 3.0)
Возвращает текущую локальную дату и местное время в качестве значения метки времени. Аргумент точности метки времени определяет точность секунд возвращаемой метки времени.
CURDATE( ) (ODBC 1.0) Возвращает текущую дату.
CURTIME( ) (ODBC 1.0) Возвращает текущее время.
DAYNAME( date_exp ) (ODBC 2.0) Возвращает символьную строку, содержащую имя источника данных дня (например, воскресенье по субботу или солнце). для источника данных, использующего английский или Sonntag через Samstag для источника данных, использующего немецкий язык) для дневной части date_exp.
DAYOFMONTH( date_exp ) (ODBC 1.0) Возвращает день месяца на основе поля месяца в date_exp в виде целочисленного значения в диапазоне от 1 до 31.
DAYOFWEEK( date_exp ) (ODBC 1.0) Возвращает день недели на основе поля недели в date_exp как целочисленное значение в диапазоне от 1 до 7, где 1 представляет воскресенье.
DAYOFYEAR( date_exp ) (ODBC 1.0) Возвращает день года на основе поля года в date_exp как целочисленное значение в диапазоне от 1 до 366.
EXTRACT( extract-field FROM extract-source ) (ODBC 3.0) Возвращает часть извлечения-поля источника извлечения. Аргумент extract-source — это выражение datetime или интервала. Аргумент extract-field может быть одним из следующих ключевых слов:

ЧАС ДНЯ ГОДА В СЕКУНДУ

Точность возвращаемого значения определяется реализацией. Масштаб равен 0, если не указано значение SECOND, в этом случае масштабирование не меньше точности дробных секунд поля извлечения-источника .
HOUR( time_exp ) (ODBC 1.0) Возвращает час на основе поля часа в time_exp в виде целочисленного значения в диапазоне от 0 до 23.
MINUTE( time_exp ) (ODBC 1.0) Возвращает минуту на основе поля минуты в time_exp в виде целочисленного значения в диапазоне от 0 до 59.
MONTH( date_exp ) (ODBC 1.0) Возвращает месяц на основе поля месяца в date_exp в виде целочисленного значения в диапазоне от 1 до 12.
MONTHNAME( date_exp ) (ODBC 2.0) Возвращает символьную строку, содержащую имя конкретного источника данных месяца (например, январь –декабрь или январь). Для источника данных, использующего английский или Januar через Dezember для источника данных, использующего немецкий язык) для части месяца date_exp.
NOW( ) (ODBC 1.0) Возвращает текущую дату и время в качестве значения метки времени.
QUARTER( date_exp ) (ODBC 1.0) Возвращает четверть в date_exp как целочисленное значение в диапазоне от 1 до 4, где 1 представляет 1 января по 31 марта.
SECOND( time_exp ) (ODBC 1.0) Возвращает второе поле на основе второго поля в time_exp в виде целочисленного значения в диапазоне от 0 до 59.
TIMESTAMPADD( интервал, integer_exp, timestamp_exp ) (ODBC 2.0) Возвращает метку времени, вычисляемую путем добавления интервалов типа integer_exp в timestamp_exp. Допустимые значения интервала являются следующими ключевыми словами:

SQL_TSI_FRAC_SECOND

SQL_TSI_SECOND

SQL_TSI_MINUTE

SQL_TSI_HOUR

SQL_TSI_DAY

SQL_TSI_WEEK

SQL_TSI_MONTH

SQL_TSI_QUARTER

SQL_TSI_YEAR

где доля секунд выражается в миллиардах секунд. Например, следующая инструкция SQL возвращает имя каждого сотрудника и его или ее год годовщины:

SELECT NAME, {fn TIMESTAMPADD(SQL_TSI_YEAR, 1, HIRE_DATE)} FROM EMPLOYEES

Если timestamp_exp является значением времени и интервалом определяет дни, недели, месяцы, кварталы или годы, то для текуще timestamp_exp й даты устанавливается текущая дата перед вычислением результирующей метки времени.

Если timestamp_exp — это значение даты и интервал, указывающее дробные секунды, секунды, минуты или часы, timestamp_exp то перед вычислением результирующей метки времени задается значение 0.

Приложение определяет интервалы, поддерживаемые источником данных, путем вызова SQLGetInfo с параметром SQL_TIMEDATE_ADD_INTERVALS.
TIMESTAMPDIFF( интервал, timestamp_exp1, timestamp_exp2 ) (ODBC 2.0) Возвращает целочисленное число интервалов интервалов типа, по которым timestamp_exp2 больше timestamp_exp1. Допустимые значения интервала являются следующими ключевыми словами:

SQL_TSI_FRAC_SECOND

SQL_TSI_SECOND

SQL_TSI_MINUTE

SQL_TSI_HOUR

SQL_TSI_DAY

SQL_TSI_WEEK

SQL_TSI_MONTH

SQL_TSI_QUARTER

SQL_TSI_YEAR

где доля секунд выражается в миллиардах секунд. Например, следующая инструкция SQL возвращает имя каждого сотрудника и количество лет его работы:

SELECT NAME, {fn TIMESTAMPDIFF(SQL_TSI_YEAR, {fn CURDATE()}, HIRE_DATE)} FROM EMPLOYEES

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

Если выражение метки времени — это значение даты и интервал , указывающее дробные секунды, секунды, минуты или часы, то перед вычислением разницы между метками времени задается значение 0.

Приложение определяет интервалы, поддерживаемые источником данных, путем вызова SQLGetInfo с параметром SQL_TIMEDATE_DIFF_INTERVALS.
WEEK( date_exp ) (ODBC 1.0) Возвращает неделю года на основе поля недели в date_exp как целочисленное значение в диапазоне от 1 до 53.
YEAR( date_exp ) (ODBC 1.0) Возвращает год на основе поля года в date_exp как целочисленное значение. Диапазон зависит от источника данных.