Операции над датами и временем в sql
Содержание:
- tzoffsettzoffset
- Аргументы функции datepart, содержащие информацию о номере недели и дняWeek and weekday datepart arguments
- Типы данных Access
- iso_week datepartiso_week datepart
- SQL Справочник
- SQL Учебник
- Прибавление и вычитание временного интервала
- Функции, характеризующие момент (значение аргумента)
- RemarksRemarks
- Получение текущих даты и времени
- Тематическая реклама
- RemarksRemarks
- SQL References
- Возвращаемое значениеReturn Value
- SQL Работа с датами
- Параметр значений
- ПримерыExamples
- ПримерыExamples
- ПримерыExamples
tzoffsettzoffset
возвращает значение tzoffset (tz) как количество минут (со знаком). returns the tzoffset (tz) value as the number of minutes (signed). В результате выполнения этой инструкции возвращается смещение часового пояса 310 минут:This statement returns a time zone offset of 310 minutes:
Функция отображает значение tzoffset описанным ниже образом. renders the tzoffset value as follows:
- Для datetimeoffset и datetime2 значение tzoffset возвращает временное смещение в минутах, причем для datetime2 смещение всегда равно 0 минут.For datetimeoffset and datetime2, tzoffset returns the time offset in minutes, where the offset for datetime2 is always 0 minutes.
- Для типов данных, которые могут быть неявно преобразованы в datetimeoffset или datetime2, функция возвращает временное смещение в минутах.For data types that can implicitly convert to datetimeoffset or datetime2, returns the time offset in minutes. Для остальных типов даты и времени этого не происходит.Exception: other date / time data types.
- Для параметров любых других типов возвращается ошибка.Parameters of all other types result in an error.
Аргументы функции datepart, содержащие информацию о номере недели и дняWeek and weekday datepart arguments
Для week (wk, ww) или weekday (dw) datepart возвращаемое значение зависит от значения, заданного функцией SET DATEFIRST.For a week (wk, ww) or weekday (dw) datepart, the return value depends on the value set by SET DATEFIRST.
1 января любого года определяет начальное число для компонента даты week datepart.January 1 of any year defines the starting number for the week datepart. Пример:For example:
DATEPART (wk, ‘Jan 1, xxx x’) = 1,DATEPART (wk, ‘Jan 1, xxx x’) = 1
где xxxx — любой год.where xxxx is any year.
В этой таблице представлены возвращаемые значения параметров week и weekday datepart для даты 21.04.2007 с каждым аргументом функции SET DATEFIRST.This table shows the return value for the week and weekday datepart for ‘2007-04-21 ‘ for each SET DATEFIRST argument. 1 января 2007 г. приходится на понедельник.January 1, 2007 falls on a Monday. 21 апреля 2007 г. приходится на субботу.April 21, 2007 falls on a Saturday. Для региональных настроек «Английский (США)»For U.S. English,
SET DATEFIRST 7 (воскресенье).serves as the default. После задания DATEFIRST используйте предлагаемую инструкцию SQL для табличных значений datepart:After setting DATEFIRST, use this suggested SQL statement for the datepart table values:
SET DATEFIRSTSET DATEFIRST— аргументargument | weekweekвозвращаемоеreturned | weekdayweekdayвозвращаемоеreturned |
---|---|---|
11 | 1616 | 66 |
22 | 1717 | 55 |
33 | 1717 | 44 |
44 | 1717 | 33 |
55 | 1717 | 22 |
66 | 1717 | 11 |
77 | 1616 | 77 |
Типы данных Access
Типы данных Access разделяются на следующие группы:
- Текстовый – максимально 255 байтов.
- Мемо — до 64000 байтов.
-
Числовой — 1,2,4 или 8 байтов.Для числового типа размер поля м.б. следующим:
- байт — целые числа от -0 до 255, занимает при хранении 1 байт
- целое — целые числа от -32768 до 32767, занимает 2 байта
- длинное целое — целые числа от -2147483648 до 2147483647, занимает 4 байта
- с плавающей точкой — числа с точностью до 6 знаков от –3,4*1038 до 3,4*1038, занимает 4 байта
- с плавающей точкой — числа с точностью от –1,797*10308 до 1,797*10308, занимает 8 байт
- Дата-время — 8 байтов
- Денежный — 8 байтов, данные о денежных суммах, хранящиеся с 4 знаками после запятой.
- Счетчик — уникальное длинное целое, генерируемое Access при создании каждой новой записи — 4 байта.
- Логический — логические данные 1бит.
- Поле объекта OLE — до 1 гигабайта, картинки, диаграммы и другие объекты OLE из приложений Windows. Объекты OLE могут быть связанными или внедренными.
- Гиперссылки — поле, в котором хранятся гиперссылки. Гиперссылка может быть либо типа UNC (стандартный формат для указания пути с включением сетевого сервера файлов), либо URL(адрес объекта, документа, страницы или объекта другого типа в Интернете или Интранете. Адрес URL определяет протокол для доступа и конечный адрес).
- Мастер подстановок — поле, позволяющее выбрать значение из другой таблицы Accesss или из списка значений, используя поле со списком. Чаще всего используется для ключевых полей. Имеет тот же размер, что и первичный ключ, являющийся также и полем подстановок, обычно 4 байта. (Первичный ключ – одно или несколько полей, комбинация значений которых однозначно определяет каждую запись в таблице Accesss. Не допускает неопределенных .Null. значений, всегда должен иметь уникальный индекс. Служит для связывания таблицы с вторичными ключами других таблиц).
iso_week datepartiso_week datepart
Стандарт ISO 8601 включает в себя систему отсчета дней и недель ISO.ISO 8601 includes the ISO week-date system, a numbering system for weeks. Каждая неделя приписывается тому году, в котором находится ее четверг.Each week is associated with the year in which Thursday occurs. Например, первая неделя 2004 г. (2004W01) считается с понедельника 29 декабря 2003 г. по воскресенье 4 января 2004 г.For example, week 1 of 2004 (2004W01) covered Monday, 29 December 2003 to Sunday, 4 January 2004. Этот стиль нумерации обычно используется в странах и регионах Европы.European countries / regions typically use this style of numbering. В других странах он применяется редко.Non-European countries / regions typically do not use it.
Примечание. Наибольшее число недель в году может составлять 52 или 53.Note: the highest week number in a year could be either 52 or 53.
Система отсчета недель в разных странах и регионах может не совпадать со стандартом ISO.The numbering systems of different countries/regions might not comply with the ISO standard. В таблице ниже представлено шесть возможных вариантов.This table shows six possibilities:
Первый день неделиFirst day of week | Содержание первой недели годаFirst week of year contains | Двойное присвоение недельWeeks assigned two times | Применяется в:Used by/in |
---|---|---|---|
ВоскресеньеSunday | 1 января,1 January,Первая суббота,First Saturday,1–7 дней года1-7 days of year | ДаYes | СШАUnited States |
ПонедельникMonday | 1 января,1 January,Первое воскресенье,First Sunday,1–7 дней года1-7 days of year | ДаYes | Большинство стран Европы, а также ВеликобританияMost of Europe and the United Kingdom |
ПонедельникMonday | 4 января,4 January,Первый четвергFirst Thursday,4–7 дней года4-7 days of year | нетNo | ISO 8601, Норвегия и ШвецияISO 8601, Norway, and Sweden |
ПонедельникMonday | 7 января,7 January,Первый понедельникFirst Monday,7 дней года7 days of year | нетNo | |
СредаWednesday | 1 января,1 January,Первый вторник,First Tuesday,1–7 дней года1-7 days of year | ДаYes | |
СубботаSaturday | 1 января,1 January,Первая пятница,First Friday,1–7 дней года1-7 days of year | ДаYes |
SQL Справочник
SQL Ключевые слова
ADD
ADD CONSTRAINT
ALTER
ALTER COLUMN
ALTER TABLE
ALL
AND
ANY
AS
ASC
BACKUP DATABASE
BETWEEN
CASE
CHECK
COLUMN
CONSTRAINT
CREATE
CREATE DATABASE
CREATE INDEX
CREATE OR REPLACE VIEW
CREATE TABLE
CREATE PROCEDURE
CREATE UNIQUE INDEX
CREATE VIEW
DATABASE
DEFAULT
DELETE
DESC
DISTINCT
DROP
DROP COLUMN
DROP CONSTRAINT
DROP DATABASE
DROP DEFAULT
DROP INDEX
DROP TABLE
DROP VIEW
EXEC
EXISTS
FOREIGN KEY
FROM
FULL OUTER JOIN
GROUP BY
HAVING
IN
INDEX
INNER JOIN
INSERT INTO
INSERT INTO SELECT
IS NULL
IS NOT NULL
JOIN
LEFT JOIN
LIKE
LIMIT
NOT
NOT NULL
OR
ORDER BY
OUTER JOIN
PRIMARY KEY
PROCEDURE
RIGHT JOIN
ROWNUM
SELECT
SELECT DISTINCT
SELECT INTO
SELECT TOP
SET
TABLE
TOP
TRUNCATE TABLE
UNION
UNION ALL
UNIQUE
UPDATE
VALUES
VIEW
WHERE
MySQL Функции
Функции строк
ASCII
CHAR_LENGTH
CHARACTER_LENGTH
CONCAT
CONCAT_WS
FIELD
FIND_IN_SET
FORMAT
INSERT
INSTR
LCASE
LEFT
LENGTH
LOCATE
LOWER
LPAD
LTRIM
MID
POSITION
REPEAT
REPLACE
REVERSE
RIGHT
RPAD
RTRIM
SPACE
STRCMP
SUBSTR
SUBSTRING
SUBSTRING_INDEX
TRIM
UCASE
UPPER
Функции чисел
ABS
ACOS
ASIN
ATAN
ATAN2
AVG
CEIL
CEILING
COS
COT
COUNT
DEGREES
DIV
EXP
FLOOR
GREATEST
LEAST
LN
LOG
LOG10
LOG2
MAX
MIN
MOD
PI
POW
POWER
RADIANS
RAND
ROUND
SIGN
SIN
SQRT
SUM
TAN
TRUNCATE
Функции дат
ADDDATE
ADDTIME
CURDATE
CURRENT_DATE
CURRENT_TIME
CURRENT_TIMESTAMP
CURTIME
DATE
DATEDIFF
DATE_ADD
DATE_FORMAT
DATE_SUB
DAY
DAYNAME
DAYOFMONTH
DAYOFWEEK
DAYOFYEAR
EXTRACT
FROM_DAYS
HOUR
LAST_DAY
LOCALTIME
LOCALTIMESTAMP
MAKEDATE
MAKETIME
MICROSECOND
MINUTE
MONTH
MONTHNAME
NOW
PERIOD_ADD
PERIOD_DIFF
QUARTER
SECOND
SEC_TO_TIME
STR_TO_DATE
SUBDATE
SUBTIME
SYSDATE
TIME
TIME_FORMAT
TIME_TO_SEC
TIMEDIFF
TIMESTAMP
TO_DAYS
WEEK
WEEKDAY
WEEKOFYEAR
YEAR
YEARWEEK
Функции расширений
BIN
BINARY
CASE
CAST
COALESCE
CONNECTION_ID
CONV
CONVERT
CURRENT_USER
DATABASE
IF
IFNULL
ISNULL
LAST_INSERT_ID
NULLIF
SESSION_USER
SYSTEM_USER
USER
VERSION
SQL Server функции
Функции строк
ASCII
CHAR
CHARINDEX
CONCAT
Concat with +
CONCAT_WS
DATALENGTH
DIFFERENCE
FORMAT
LEFT
LEN
LOWER
LTRIM
NCHAR
PATINDEX
QUOTENAME
REPLACE
REPLICATE
REVERSE
RIGHT
RTRIM
SOUNDEX
SPACE
STR
STUFF
SUBSTRING
TRANSLATE
TRIM
UNICODE
UPPER
Функции чисел
ABS
ACOS
ASIN
ATAN
ATN2
AVG
CEILING
COUNT
COS
COT
DEGREES
EXP
FLOOR
LOG
LOG10
MAX
MIN
PI
POWER
RADIANS
RAND
ROUND
SIGN
SIN
SQRT
SQUARE
SUM
TAN
Функции дат
CURRENT_TIMESTAMP
DATEADD
DATEDIFF
DATEFROMPARTS
DATENAME
DATEPART
DAY
GETDATE
GETUTCDATE
ISDATE
MONTH
SYSDATETIME
YEAR
Функции расширений
CAST
COALESCE
CONVERT
CURRENT_USER
IIF
ISNULL
ISNUMERIC
NULLIF
SESSION_USER
SESSIONPROPERTY
SYSTEM_USER
USER_NAME
MS Access функции
Функции строк
Asc
Chr
Concat with &
CurDir
Format
InStr
InstrRev
LCase
Left
Len
LTrim
Mid
Replace
Right
RTrim
Space
Split
Str
StrComp
StrConv
StrReverse
Trim
UCase
Функции чисел
Abs
Atn
Avg
Cos
Count
Exp
Fix
Format
Int
Max
Min
Randomize
Rnd
Round
Sgn
Sqr
Sum
Val
Функции дат
Date
DateAdd
DateDiff
DatePart
DateSerial
DateValue
Day
Format
Hour
Minute
Month
MonthName
Now
Second
Time
TimeSerial
TimeValue
Weekday
WeekdayName
Year
Другие функции
CurrentUser
Environ
IsDate
IsNull
IsNumeric
SQL ОператорыSQL Типы данныхSQL Краткий справочник
SQL Учебник
SQL ГлавнаяSQL ВведениеSQL СинтаксисSQL SELECTSQL SELECT DISTINCTSQL WHERESQL AND, OR, NOTSQL ORDER BYSQL INSERT INTOSQL Значение NullSQL Инструкция UPDATESQL Инструкция DELETESQL SELECT TOPSQL MIN() и MAX()SQL COUNT(), AVG() и …SQL Оператор LIKESQL ПодстановочныйSQL Оператор INSQL Оператор BETWEENSQL ПсевдонимыSQL JOINSQL JOIN ВнутриSQL JOIN СлеваSQL JOIN СправаSQL JOIN ПолноеSQL JOIN СамSQL Оператор UNIONSQL GROUP BYSQL HAVINGSQL Оператор ExistsSQL Операторы Any, AllSQL SELECT INTOSQL INSERT INTO SELECTSQL Инструкция CASESQL Функции NULLSQL ХранимаяSQL Комментарии
Прибавление и вычитание временного интервала
С датами и временем часто приходится проводить арифметические операции: прибавлять к заданной дате определенный временной интервал или вычитать. Прибавление временного интервала можно осуществить тремя способами:
- Функция DATE_ADD(исходная_дата, INTERVAL выражение тип);
- Функция ADDDATE (исходная_дата, INTERVAL выражение тип);
- Выражение: исходная_дата + INTERVAL выражение тип.
Вычитание временного интервала также можно осуществить тремя способами:
- Функция DATE_SUB(исходная_дата, INTERVAL выражение тип);
- Функция SUBDATE (исходная_дата, INTERVAL выражение тип);
- Выражение: исходная_дата — INTERVAL выражение тип.
Исходная_дата – это дата, к которой прибавляется или вычитается определенный интервал времени.
Выражение – это сам прибавляемый или вычитаемый интервал времени, заданный в текстовом формате.
Тип – аргумент, указывающий тип прибавляемого интервала. Этот параметр уточняет, как правильно интерпретировать выражение. Например, выражение ‘3:24’ можно интерпретировать и как 3 часа 24 минуты, и как 3 минуты 24 секунды. Если указан тип «MINUTE_SECOND», то интерпретация будет однозначной.
Связь между аргументами выражение и тип показана в таблице :
Пример 2
Следующие три команды делают одну и ту же операцию. Они прибавляют секунду к заданному времени.
SELECT ‘2016-09-10 23:59:59’ + Interval 1 SECOND;
SELECT ADDDATE(‘2016-09-10 23:59:59’, Interval 1 SECOND);
SELECT DATE_ADD(‘2016-09-10 23:59:59’, Interval 1 SECOND);
Результат всех трех команд одинаковый: 2016-09-11 00:00:00.
Пример 3
Следующие три команды вычисляют дату предшествующую заданной ровно на полтора года:
SELECT DATE_SUB(‘2016-09-10 23:59:59’, Interval ‘1-6’ YEAR_MONTH);
SELECT SUBDATE(‘2016-09-10 23:59:59’, Interval ‘1-6’ YEAR_MONTH);
SELECT ‘2016-09-10 23:59:59’ — Interval ‘1-6’ YEAR_MONTH;
Результат всех трех команд одинаковый : 2015-03-10 23:59:59.
Функции, характеризующие момент (значение аргумента)
DATE(datetime) — извлекает из значения даты и времени суток
в формате DATETIME (‘YYYY-MM-DD hh:mm:ss’) только дату, отсекая часы, минуты и секунды.
TIME(datetime) — извлекает из значения даты и времени суток
в формате DATETIME (‘YYYY-MM-DD hh:mm:ss’) только время суток, отсекая дату.
TIMESTAMP(param) — принимает в качестве аргумента дату и время
суток в полном или кратком формате и возвращает полный вариант в формате
DATETIME (‘YYYY-MM-DD hh:mm:ss’).
DAY(date), DAYOFMONTH(date) — принимают в качестве аргумента дату,
и возвращают порядковый номер дня в месяце (от 1 до 31).
DAYNAME(date) — принимает в качестве аргумента дату,
и возвращает день недели в виде полного слова на английском языке.
DAYOFWEEK(date) — принимает в качестве аргумента дату,
и возвращает порядкоый номер дня недели от 1 (воскресенье) до 7 (суббота).
WEEKDAY(date) — принимает в качестве аргумента дату,
и возвращает порядкоый номер дня недели от 0 (понедельник) до 6 (воскресенье).
WEEK(date) — принимает в качестве аргумента дату,
и возвращает номер недели в году для этой даты от 0 до 53.
WEEKOFYEAR(datetime) — возвращает порядковый номер недели в году
для даты datetime от 1 до 53.
MONTH(datetime) — возвращает числовое значение месяца года от 1 до 12
для даты datetime.
MONTHNAME(datetime) — возвращает строку с названием месяца
для даты datetime.
QUARTER(datetime) — возвращает значение квартала от 1 до 4
для даты datetime, которая может быть передана в формате ‘YYYY-MM-DD’ или ‘YYYY-MM-DD hh:mm:ss’.
YEAR(datetime) — возвращает год от 1000 до 9999
для даты datetime.
DAYOFYEAR(date) — возвращает порядковый номер дня в году
от 1 до 366 для даты date.
HOUR(datetime) — возвращает значение часа от 0 до 23 для
времени datetime.
MINUTE(datetime) — возвращает значение минут от 0 до 59 для
времени datetime.
SECOND(time) — возвращает количество секунд для времени суток
time, которое задаётся либо в виде строки ‘hh:mm:ss’, либо числа hhmmss.
EXTRACT(type FROM datetime) — принимает дату и время суток datetime
и возвращает часть, определяемую параметром type. Значениями параметра могут быть YEAR, MONTH, DAY,
HOUR, MINUTE, SECOND.
RemarksRemarks
Функция GETDATE может использоваться в инструкциях Transact-SQLTransact-SQL везде, где допустимо использование выражения datetime.Transact-SQLTransact-SQL statements can refer to GETDATE anywhere they can refer to a datetime expression.
GETDATE является недетерминированной функцией.GETDATE is a nondeterministic function. Невозможно проиндексировать представления и выражения, ссылающиеся на эту функцию в столбце.Views and expressions that reference this function in a column cannot be indexed.
Использование SWITCHOFFSET с функцией GETDATE() может вызвать замедление выполнения запроса, поскольку оптимизатор запросов не может получить точные оценки количества элементов для значения GETDATE.Using SWITCHOFFSET with the function GETDATE() can cause the query to run slowly because the query optimizer is unable to obtain accurate cardinality estimates for the GETDATE value. Рекомендуется заранее вычислить значение GETDATE, а затем указать это значение в запросе, как показано в следующем примере.We recommend that you precompute the GETDATE value and then specify that value in the query as shown in the following example. Кроме того, с помощью указания запроса OPTION (RECOMPILE) можно вынудить оптимизатор запросов повторно компилировать план запроса при каждом выполнении одного и того же запроса.In addition, use the OPTION (RECOMPILE) query hint to force the query optimizer to recompile a query plan the next time the same query is executed. В этом случае оптимизатор будет иметь точные оценки количества элементов для GETDATE(), что позволит ему сформировать более эффективный план запроса.The optimizer will then have accurate cardinality estimates for GETDATE() and will produce a more efficient query plan.
Получение текущих даты и времени
Для получения текущей даты (без времени) в формате YYYY-MM-DD можно использовать функции:
- CURDATE()
- CURRENT_DATE()
Для получения текущего времени (без даты) в формате HH:MM:SS можно использовать функции:
- CURTIME()
- CURRENT_TIME()
Для получения текущих даты и времени в формате YYYY-MM-DD HH:MM:SS можно использовать любую из следующих функций:
- NOW()
- SYSDATE()
- CURRENT_TIMESTAMP
Пример 1
SELECT CURDATE(); или SELECT CURRENT_DATE();
Результат: 2016-08-28
SELECT CURTIME(); или SELECT CURENT_TIME();
Результат: 19:29:54
SELECT NOW(); или SELECT SYSDATE(); или SELECT CURRENT_TIMESTAMP;
Результат: 2016-08-28 19:29:54
Тематическая реклама
RemarksRemarks
Функция может использоваться в предложениях выбора из списка, WHERE, HAVING, GROUP BY и ORDER BY. can be used in the select list, WHERE, HAVING, GROUP BY, and ORDER BY clauses.
В SQL Server 2019 (15.x)SQL Server 2019 (15.x) функция DATEPART неявно приводит строковые литералы к типу datetime2.DATEPART implicitly casts string literals as a datetime2 type in SQL Server 2019 (15.x)SQL Server 2019 (15.x). Это означает, что DATENAME не поддерживает формат ГЧМ (год, число, месяц) при передаче даты в виде строки.This means that DATENAME does not support the format YDM when the date is passed as a string. Для использования формата ГЧМ (год, число, месяц) необходимо явно привести строку к типу datetime или smalldatetime.You must explicitly cast the string to a datetime or smalldatetime type to use the YDM format.
SQL References
SQL Keywords
ADD
ADD CONSTRAINT
ALTER
ALTER COLUMN
ALTER TABLE
ALL
AND
ANY
AS
ASC
BACKUP DATABASE
BETWEEN
CASE
CHECK
COLUMN
CONSTRAINT
CREATE
CREATE DATABASE
CREATE INDEX
CREATE OR REPLACE VIEW
CREATE TABLE
CREATE PROCEDURE
CREATE UNIQUE INDEX
CREATE VIEW
DATABASE
DEFAULT
DELETE
DESC
DISTINCT
DROP
DROP COLUMN
DROP CONSTRAINT
DROP DATABASE
DROP DEFAULT
DROP INDEX
DROP TABLE
DROP VIEW
EXEC
EXISTS
FOREIGN KEY
FROM
FULL OUTER JOIN
GROUP BY
HAVING
IN
INDEX
INNER JOIN
INSERT INTO
INSERT INTO SELECT
IS NULL
IS NOT NULL
JOIN
LEFT JOIN
LIKE
LIMIT
NOT
NOT NULL
OR
ORDER BY
OUTER JOIN
PRIMARY KEY
PROCEDURE
RIGHT JOIN
ROWNUM
SELECT
SELECT DISTINCT
SELECT INTO
SELECT TOP
SET
TABLE
TOP
TRUNCATE TABLE
UNION
UNION ALL
UNIQUE
UPDATE
VALUES
VIEW
WHERE
MySQL Functions
String Functions
ASCII
CHAR_LENGTH
CHARACTER_LENGTH
CONCAT
CONCAT_WS
FIELD
FIND_IN_SET
FORMAT
INSERT
INSTR
LCASE
LEFT
LENGTH
LOCATE
LOWER
LPAD
LTRIM
MID
POSITION
REPEAT
REPLACE
REVERSE
RIGHT
RPAD
RTRIM
SPACE
STRCMP
SUBSTR
SUBSTRING
SUBSTRING_INDEX
TRIM
UCASE
UPPER
Numeric Functions
ABS
ACOS
ASIN
ATAN
ATAN2
AVG
CEIL
CEILING
COS
COT
COUNT
DEGREES
DIV
EXP
FLOOR
GREATEST
LEAST
LN
LOG
LOG10
LOG2
MAX
MIN
MOD
PI
POW
POWER
RADIANS
RAND
ROUND
SIGN
SIN
SQRT
SUM
TAN
TRUNCATE
Date Functions
ADDDATE
ADDTIME
CURDATE
CURRENT_DATE
CURRENT_TIME
CURRENT_TIMESTAMP
CURTIME
DATE
DATEDIFF
DATE_ADD
DATE_FORMAT
DATE_SUB
DAY
DAYNAME
DAYOFMONTH
DAYOFWEEK
DAYOFYEAR
EXTRACT
FROM_DAYS
HOUR
LAST_DAY
LOCALTIME
LOCALTIMESTAMP
MAKEDATE
MAKETIME
MICROSECOND
MINUTE
MONTH
MONTHNAME
NOW
PERIOD_ADD
PERIOD_DIFF
QUARTER
SECOND
SEC_TO_TIME
STR_TO_DATE
SUBDATE
SUBTIME
SYSDATE
TIME
TIME_FORMAT
TIME_TO_SEC
TIMEDIFF
TIMESTAMP
TO_DAYS
WEEK
WEEKDAY
WEEKOFYEAR
YEAR
YEARWEEK
Advanced Functions
BIN
BINARY
CASE
CAST
COALESCE
CONNECTION_ID
CONV
CONVERT
CURRENT_USER
DATABASE
IF
IFNULL
ISNULL
LAST_INSERT_ID
NULLIF
SESSION_USER
SYSTEM_USER
USER
VERSION
SQL Server Functions
String Functions
ASCII
CHAR
CHARINDEX
CONCAT
Concat with +
CONCAT_WS
DATALENGTH
DIFFERENCE
FORMAT
LEFT
LEN
LOWER
LTRIM
NCHAR
PATINDEX
QUOTENAME
REPLACE
REPLICATE
REVERSE
RIGHT
RTRIM
SOUNDEX
SPACE
STR
STUFF
SUBSTRING
TRANSLATE
TRIM
UNICODE
UPPER
Numeric Functions
ABS
ACOS
ASIN
ATAN
ATN2
AVG
CEILING
COUNT
COS
COT
DEGREES
EXP
FLOOR
LOG
LOG10
MAX
MIN
PI
POWER
RADIANS
RAND
ROUND
SIGN
SIN
SQRT
SQUARE
SUM
TAN
Date Functions
CURRENT_TIMESTAMP
DATEADD
DATEDIFF
DATEFROMPARTS
DATENAME
DATEPART
DAY
GETDATE
GETUTCDATE
ISDATE
MONTH
SYSDATETIME
YEAR
Advanced Functions
CAST
COALESCE
CONVERT
CURRENT_USER
IIF
ISNULL
ISNUMERIC
NULLIF
SESSION_USER
SESSIONPROPERTY
SYSTEM_USER
USER_NAME
MS Access Functions
String Functions
Asc
Chr
Concat with &
CurDir
Format
InStr
InstrRev
LCase
Left
Len
LTrim
Mid
Replace
Right
RTrim
Space
Split
Str
StrComp
StrConv
StrReverse
Trim
UCase
Numeric Functions
Abs
Atn
Avg
Cos
Count
Exp
Fix
Format
Int
Max
Min
Randomize
Rnd
Round
Sgn
Sqr
Sum
Val
Date Functions
Date
DateAdd
DateDiff
DatePart
DateSerial
DateValue
Day
Format
Hour
Minute
Month
MonthName
Now
Second
Time
TimeSerial
TimeValue
Weekday
WeekdayName
Year
Other Functions
CurrentUser
Environ
IsDate
IsNull
IsNumeric
SQL Quick Ref
Возвращаемое значениеReturn Value
Каждое выражение datepart и его краткие формы возвращают одно и то же значение.Each datepart and its abbreviations return the same value.
Возвращаемое значение зависит от языка среды, задаваемого инструкцией SET LANGUAGE, и от параметра конфигурации сервера «язык по умолчанию» для имени входа.The return value depends on the language environment set by using SET LANGUAGE, and by the Configure the default language Server Configuration Option of the login. Если значение date является строковым литералом некоторого формата, то возвращаемое значение зависит от функции SET DATEFORMAT.The return value depends on SET DATEFORMAT if date is a string literal of some formats. Инструкция SET DATEFORMAT не изменяет возвращаемое значение, если дата представляется выражением столбца типа данных даты или времени.SET DATEFORMAT does not change the return value when the date is a column expression of a date or time data type.
Ниже представлена таблица соответствия аргументов функции datepart и значений, возвращенных выражением .This table lists all datepart arguments, with corresponding return values, for the statement . Аргумент date имеет тип данных datetimeoffset(7) .The date argument has a datetimeoffset(7) data type. Последние две позиции значения, возвращаемого функцией nanosecond datepart, всегда . Масштаб этого значения составляет 9.The last two positions of the nanosecond datepart return value are always and this value has a scale of 9:
.123456700.123456700
datepartdatepart | Возвращаемое значениеReturn value |
---|---|
year, yyyy, yyyear, yyyy, yy | 2007 г.2007 |
quarter, qq, qquarter, qq, q | 44 |
month, mm, mmonth, mm, m | 1010 |
dayofyear, dy, ydayofyear, dy, y | 303303 |
day, dd, dday, dd, d | 3030 |
week, wk, wwweek, wk, ww | 4444 |
weekday, dwweekday, dw | 33 |
hour, hhhour, hh | 1212 |
minute, nminute, n | 1515 |
second, ss, ssecond, ss, s | 3232 |
millisecond, msmillisecond, ms | 123123 |
microsecond, mcsmicrosecond, mcs | 123456123456 |
nanosecond, nsnanosecond, ns | 123456700123456700 |
tzoffset, tztzoffset, tz | 310310 |
iso_week, isowk, isowwiso_week, isowk, isoww | 4444 |
SQL Работа с датами
Вы можете легко сравнить две даты, если нет никакого компонента времени!
Предположим, что у нас есть следующая таблица «Orders»:
OrderId | ProductName | OrderDate |
---|---|---|
1 | Geitost | 2008-11-11 |
2 | Camembert Pierrot | 2008-11-09 |
3 | Mozzarella di Giovanni | 2008-11-11 |
4 | Mascarpone Fabioli | 2008-10-29 |
Теперь мы хотим выбрать записи с порядковым номером «2008-11-11» из приведенной выше таблицы.
Мы используем следующую инструкцию SELECT:
SELECT * FROM Orders WHERE OrderDate=’2008-11-11′
Результирующий набор будет выглядеть следующим образом:
OrderId | ProductName | OrderDate |
---|---|---|
1 | Geitost | 2008-11-11 |
3 | Mozzarella di Giovanni | 2008-11-11 |
Теперь предположим, что таблица «Orders» выглядит следующим образом (обратите внимание на компонент time в столбце «OrderDate»):
OrderId | ProductName | OrderDate |
---|---|---|
1 | Geitost | 2008-11-11 13:23:44 |
2 | Camembert Pierrot | 2008-11-09 15:45:21 |
3 | Mozzarella di Giovanni | 2008-11-11 11:12:01 |
4 | Mascarpone Fabioli | 2008-10-29 14:56:59 |
Если мы используем тот же оператор SELECT, что и выше:
SELECT * FROM Orders WHERE OrderDate=’2008-11-11′
Мы не получим никакого результата! Это происходит потому, что запрос ищет только даты без временной части.
Совет: Чтобы ваши запросы были простыми и удобными в обслуживании, не допускайте компонентов времени в ваших датах!
Параметр значений
Параметр | Описание | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
string | Требуемый. Строка, которая будет отформатирована до даты | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
format | Требуемый. Формат для использования. Может быть одно или комбинация следующих значений:
|
ПримерыExamples
Б.B. Изменение смещения часового пояса в минутахChanging the time zone offset in minutes
В следующем примере текущий часовой пояс изменяется на минут.The following example changes the current time zone to minutes.
В.C. Добавление 13-часового смещения часового поясаAdding a 13-hour time zone offset
В следующем примере 13-часовое смещение часового пояса добавляется к дате и времени.The following example adds a 13-hour time zone offset to a date and time.
ПримерыExamples
В приведенном ниже примере возвращаются компоненты указанной даты.This example returns the date parts for the specified date. Подставьте значение datepart из таблицы для аргумента в инструкции SELECT:Substitute a datepart value from the table for the argument in the SELECT statement:
Результирующий набор:Here is the result set.
datepartdatepart | Возвращаемое значениеReturn value |
---|---|
year, yyyy, yyyear, yyyy, yy | 2007 г.2007 |
quarter, qq, qquarter, qq, q | 44 |
month, mm, mmonth, mm, m | ОктябрьOctober |
dayofyear, dy, ydayofyear, dy, y | 303303 |
day, dd, dday, dd, d | 3030 |
week, wk, wwweek, wk, ww | 4444 |
weekday, dwweekday, dw | ВторникTuesday |
hour, hhhour, hh | 1212 |
minute, nminute, n | 1515 |
second, ss, ssecond, ss, s | 3232 |
millisecond, msmillisecond, ms | 123123 |
microsecond, mcsmicrosecond, mcs | 123456123456 |
nanosecond, nsnanosecond, ns | 123456700123456700 |
TZoffset, tzTZoffset, tz | +05:10+05:10 |
ISO_WEEK, ISOWK, ISOWWISO_WEEK, ISOWK, ISOWW | 4444 |
Azure Synapse AnalyticsAzure Synapse Analytics и Параллельное хранилище данныхParallel Data Warehouseand Параллельное хранилище данныхParallel Data Warehouse
В приведенном ниже примере возвращаются компоненты указанной даты.This example returns the date parts for the specified date. Подставьте значение datepart из таблицы для аргумента в инструкции SELECT:Substitute a datepart value from the table for the argument in the SELECT statement:
Результирующий набор:Here is the result set.
datepartdatepart | Возвращаемое значениеReturn value |
---|---|
year, yyyy, yyyear, yyyy, yy | 2007 г.2007 |
quarter, qq, qquarter, qq, q | 44 |
month, mm, mmonth, mm, m | ОктябрьOctober |
dayofyear, dy, ydayofyear, dy, y | 303303 |
day, dd, dday, dd, d | 3030 |
week, wk, wwweek, wk, ww | 4444 |
weekday, dwweekday, dw | ВторникTuesday |
hour, hhhour, hh | 1212 |
minute, nminute, n | 1515 |
second, ss, ssecond, ss, s | 3232 |
millisecond, msmillisecond, ms | 123123 |
microsecond, mcsmicrosecond, mcs | 123456123456 |
nanosecond, nsnanosecond, ns | 123456700123456700 |
TZoffset, tzTZoffset, tz | +05:10+05:10 |
ISO_WEEK, ISOWK, ISOWWISO_WEEK, ISOWK, ISOWW | 4444 |
ПримерыExamples
A.A. Простой пример функции FORMATSimple FORMAT example
В следующем примере возвращается простой набор данных, отформатированный для различных языков и региональных параметров.The following example returns a simple date formatted for different cultures.
Результирующий набор:Here is the result set.
В следующем примере показано форматирование числовых значений с помощью заданного пользовательского формата.The following example shows formatting numeric values by specifying a custom format. В примере предполагается, что текущая дата — 27 сентября 2012 г.The example assumes that the current date is September 27, 2012. Дополнительные сведения об этих и других пользовательских форматах см. в статье Пользовательские строки форматирования чисел.For more information about these and other custom formats, see Custom Numeric Format Strings.
Результирующий набор:Here is the result set.
В.C. Функция FORMAT с числовыми типамиFORMAT with numeric types
В приведенном ниже примере возвращаются 5 строк из таблицы Sales.CurrencyRate в базе данных AdventureWorks2012AdventureWorks2012.The following example returns 5 rows from the Sales.CurrencyRate table in the AdventureWorks2012AdventureWorks2012 database. Столбец EndOfDateRate в таблице хранится как тип money.The column EndOfDateRate is stored as type money in the table. В этом примере столбец возвращается неформатированным, затем форматируется в формате .NET Number, формате типа General и Currency.In this example, the column is returned unformatted and then formatted by specifying the .NET Number format, General format, and Currency format types. Дополнительные сведения об этих и других числовых форматах см. в статье Стандартные строки форматирования чисел.For more information about these and other numeric formats, see Standard Numeric Format Strings.
Результирующий набор:Here is the result set.
Этот пример задает немецкий язык и региональные параметры (de-de).This example specifies the German culture (de-de).
Г.D. Использование функции FORMAT с типами данных времениFORMAT with time data types
В этих случаях функция FORMAT возвращает значение NULL, так как символы и не экранированы.FORMAT returns NULL in these cases because and are not escaped.
Функция FORMAT возвращает форматированную строку, так как символы и экранированы.Format returns a formatted string because the and are escaped.
Формат возвращает текущее время в формате с AM или PMFormat returns a formatted current time with AM or PM specified
Формат возвращает заданное время с AMFormat returns the specified time, displaying AM
Формат возвращает заданное время с PMFormat returns the specified time, displaying PM
Формат возвращает заданное время в 24-часовом форматеFormat returns the specified time in 24h format