Содержание

date (Transact-SQL) — SQL Server

  • Статья
  • Чтение занимает 7 мин

Область применения: SQL Server (все поддерживаемые версии) База данных SQL Azure Управляемый экземпляр SQL Azure Azure Synapse Analytics Analytics Platform System (PDW)

Определяет дату в SQL Server.

Описание типа данных date

СвойствоЗначение
Синтаксисdate
ИспользованиеDECLARE @MyDate date

CREATE TABLE Таблица1 ( Столбец1 date )

Формат строковых литералов по умолчанию

(используется для клиента нижнего уровня)

ГГГГ-ММ-ДД

Дополнительные сведения см. в подразделе «Обратная совместимость для клиентов низкого уровня» следующего раздела.

ДиапазонОт 0001-01-01 до 9999-12-31 (от 1582-10-15 до 9999-12-31 для Informatica)

От 1 января 1 года до 31 декабря 9999 года нашей эры (от 15 октября 1582 года до 31 декабря 9999 года для Informatica).

Диапазоны элементовГГГГ обозначает 4 цифры, которые представляют год и принимают значения от 0001 до 9999. Для Informatica значение ГГГГ ограничено диапазоном от 1582 до 9999.

ММ обозначает 2 цифры, которые представляют месяц и принимают значения от 01 до 12.

ДД обозначает две цифры, представляющие день указанного месяца и принимающие значения от 01 до 31 в зависимости от месяца.

Длина в символах10 позиций
Точность, масштаб10, 0
Объем памяти3 байта, фиксированный
Структура хранилищаДата хранится в одной переменной типа integer размером 1 или 3 байта.
ТочностьОдин день
Значение по умолчанию1900-01-01

Это значение используется как присоединяемая часть даты при неявном преобразовании данных типа

time в значение типа datetime2 или datetimeoffset.

КалендарьГригорианский
Определяемая пользователем точность в долях секундыНет
Учет и сохранение смещения часового поясанет
Учет перехода на летнее времяНет

Поддерживаемые форматы строковых литералов для типа данных date

В приведенной ниже таблице перечислены допустимые форматы строковых литералов для типа данных date.

ЧисловойОписание
mdy

[м]м/дд/[гг]гг

[м]м-дд-[гг]гг

[м]м.дд.[гг]гг

мгд

мм/[гг]гг/дд

мм-[гг]гг/дд

[м]м. [гг]гг.дд

дмг

дд/[м]м/[гг]гг

дд-[м]м-[гг]гг

дд.[м]м.[гг]гг

дгм

дд/[гг]гг/[м]м

дд-[гг]гг-[м]м

дд.[гг]гг.[м]м

гмд

[гг]гг/[м]м/дд

[гг]гг-[м]м-дд

[гг]гг-[м]м-дд

Сочетания [м]м, дд и [гг]гг представляют в строке месяц, день и год, разделенные символом косой черты (/), дефисом (-) или точкой (.).

Поддерживаются только двух- и четырехзначные форматы записи года. Для записи года рекомендуется всегда использовать четырехзначный формат. Чтобы указать целое число в промежутке от 0001 до 9999, представляющее пороговое значение года при преобразовании двухзначной записи в четырехзначную, необходимо использовать параметр конфигурации сервера two digit year cutoff.

Примечание. Для Informatica значение ГГГГ ограничено диапазоном от 1582 до 9999.

Если двузначное число, обозначающее год, меньше или равно двузначному числу из последних двух цифр порогового года, год относится к тому же столетию, что и пороговый год. Если двузначное число, обозначающее год, больше двузначного числа из последних двух цифр порогового года, год относится к столетию, которое предшествует столетию порогового года. Например, если пороговое значение года для двухзначной записи равно 2049, то год, обозначенный двумя цифрами 49, интерпретируется как 2049, а год, обозначенный двумя цифрами 50, интерпретируется как 1950.

Формат даты по умолчанию определяется текущими настройками языковых стандартов. Формат даты можно изменить с помощью инструкций SET LANGUAGE и SET DATEFORMAT.

Формат гдм не поддерживается для типа данных date.

Алфавитный форматОписание
мес [дд][,] гггг

мес дд[,] [гг]

мес гггг [дд]

[дд] мес[,] гггг

дд мес[,][гг]гг

дд [гг]гг мес

[дд] гггг мес

гггг мес [дд]

гггг [дд] мес

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

Во избежание неоднозначности используйте четырехзначную запись года.

Если не указано число месяца, подразумевается первое число месяца.

ISO 8601Описание
ГГГГ-ММ-ДД

ГГГГММДД

То же, что и стандарт SQL. Этот формат является единственным международным стандартом.
Без разделителейОписание
[гг]ггммдд

гггг[мм][дд]

Данные типа date могут быть определены с помощью четырех, шести или восьми цифр. Строка из шести или восьми цифр всегда интерпретируется как гмд. На месяц и день всегда должно приходиться по две цифры. Строка из четырех цифр воспринимается как значение года.
ODBCОписание
{ д ‘гггг-мм-дд’ }Зависит от API-интерфейса ODBC.
Формат W3C XMLОписание
гггг-мм-ддTZDВведен для использования в XML и SOAP.

TZD обозначает часовой пояс (в виде номера или смещения +чч:мм и -чч:мм):

– «чч:мм» обозначает смещение часового пояса. чч — двузначное число от 0 до 14, представляющее количество часов в смещении часового пояса.
– обозначение ММ состоит из двух цифр, представляющих дополнительное смещение часового пояса в минутах, и принимает значения от 0 до 59.
– + (плюс) или – (минус) представляет собой обязательный знак смещения часового пояса. Данный знак указывает, добавляется или вычитается смещение часового пояса от времени в формате UTC, чтобы получить локальное время. Допустимый диапазон смещения часового пояса: от -14:00 до +14:00.

Соответствие стандартам ANSI и ISO 8601

Значение date соответствует стандартному определению ANSI SQL для григорианского календаря: «Замечание 85 — данные типа Datetime позволяют хранить даты григорианского календаря в виде чисел диапазона от 0001-01-01 CE до 9999–12–31 CE».

Формат строковых литералов по умолчанию, используемый для клиентов низкого уровня, соответствует стандарту SQL, в котором он определен как ГГГГ-ММ-ДД. Данный формат аналогичен определению даты в стандарте ISO 8601.

Примечание

Для Informatica диапазон ограничен интервалом от 1582-10-15 (15 октября 1582 г.) до 9999-12-31 (31 декабря 9999  г.).

Обратная совместимость для клиентов нижнего уровня

Некоторые клиенты нижнего уровня не поддерживают типы данных time, date, datetime2 и datetimeoffset. В следующей таблице показано сопоставление типов экземпляра более высокого уровня SQL Server и клиентов низкого уровня.

Тип данных SQL ServerФормат строкового литерала по умолчанию, передаваемый клиенту низкого уровняODBC низкого уровняOLEDB низкого уровняJDBC низкого уровняSQLCLIENT низкого уровня
timeчч:мм:сс[.
ннннннн]
SQL_WVARCHAR или SQL_VARCHARDBTYPE_WSTR или DBTYPE_STRJava.sql.StringString или SqString
dateГГГГ-ММ-ДДSQL_WVARCHAR или SQL_VARCHARDBTYPE_WSTR или DBTYPE_STRJava.sql.StringString или SqString
datetime2ГГГГ-ММ-ДД чч:мм:сс[.ннннннн]SQL_WVARCHAR или SQL_VARCHARDBTYPE_WSTR или DBTYPE_STRJava.sql.StringString или SqString
datetimeoffsetГГГГ-ММ-ДД чч:мм:сс[.ннннннн] [+|-]чч:ммSQL_WVARCHAR или SQL_VARCHARDBTYPE_WSTR или DBTYPE_STRJava.sql.StringString или SqString

Преобразование данных типа Date и Time

При преобразовании в типы данных даты и времени SQL Server отвергает все значения, которые он не распознает как значения даты или времени. Сведения об использовании функций CAST и CONVERT c данными типов даты и времени см. в статье Функции CAST и CONVERT (Transact-SQL).

Преобразование даты в другие типы данных даты и времени

В этом разделе описывается, что происходит при преобразовании типа данных date в другие типы даты и времени.

Преобразование в time(n) завершается сбоем, и появляется сообщение об ошибке 206: «Конфликт типов операндов: date несовместим с time».

При преобразовании в datetime копируется дата. Следующий код демонстрирует результаты преобразования значения date в значение datetime.

DECLARE @date date= '12-10-25';  
DECLARE @datetime datetime= @date;  
  
SELECT @date AS '@date', @datetime AS '@datetime';  
  
--Result  
--@date      @datetime  
------------ -----------------------  
--2025-12-10 2025-12-10 00:00:00.000  
--  
--(1 row(s) affected)  

Если при преобразовании в smalldatetime значение типа date находится в диапазоне значений smalldatetime, компонент даты копируется, а для компонента времени устанавливается значение 00:00:00. 000. Если значение date выходит за диапазон значений smalldatetime, выводится сообщение об ошибке 242: «Преобразование типа данных date в тип данных smalldatetime привело к появлению значения, выходящего за диапазон допустимых значений». После этого для значения типа smalldatetime устанавливается значение NULL. Следующий код демонстрирует результаты преобразования значения date в значение smalldatetime.

DECLARE @date date= '1912-10-25';  
DECLARE @smalldatetime smalldatetime = @date;  
  
SELECT @date AS '@date', @smalldatetime AS '@smalldatetime';  
  
--Result  
--@date      @smalldatetime  
------------ -----------------------  
--1912-10-25 1912-10-25 00:00:00  
--  
--(1 row(s) affected)  

При преобразовании в datetimeoffset(n) дата копируется, а для времени устанавливается значение 00:00.0000000 +00:00. Следующий код демонстрирует результаты преобразования значения date в значение datetimeoffset(3).

DECLARE @date date = '1912-10-25';  
DECLARE @datetimeoffset datetimeoffset(3) = @date;  
  
SELECT @date AS '@date', @datetimeoffset AS '@datetimeoffset';  
  
--Result  
--@date      @datetimeoffset  
------------ ------------------------------  
--1912-10-25 1912-10-25 00:00:00.000 +00:00  
--  
--(1 row(s) affected)  

При преобразовании в datetime2(n) компонент даты копируется, а для компонента времени устанавливается значение 00:00.000000. Следующий код демонстрирует результаты преобразования значения date в значение datetime2(3).

DECLARE @date date = '1912-10-25'  
DECLARE @datetime2 datetime2(3) = @date;  
  
SELECT @date AS '@date', @datetime2 AS '@datetime2(3)';  
  
--Result  
--@date      @datetime2(3)  
------------ -----------------------  
--1912-10-25 1912-10-25 00:00:00.000  
--  
--(1 row(s) affected)  

Преобразование строковых литералов в дату

Преобразование строковых литералов в типы данных даты и времени разрешается, если все части строк записаны в допустимом формате. Иначе возникает ошибка времени выполнения. Явные или скрытые преобразования, в которых не задан стиль преобразования типов данных даты и времени в строковые литералы, будут проведены в формате по умолчанию для текущего сеанса. В таблице ниже приводятся правила преобразования строковых литералов в тип данных date.

Строковый литерал входаdate
ODBC DATEСтроковые литералы ODBC сопоставляются с типом данных datetime. Любая операция присваивания литералов ODBC DATETIME типу данных date вызывает неявное преобразование между данным типом и типом datetime согласно правилам преобразования.
ODBC TIMEСм. предыдущее правило ODBC DATE.
ODBC DATETIMEСм. предыдущее правило ODBC DATE.
только DATEПростейший.
только TIMEУказаны значения по умолчанию.
только TIMEZONEУказаны значения по умолчанию.
DATE + TIMEИспользуется компонент DATE входной строки.
DATE + TIMEZONEНе допускается.
TIME + TIMEZONEУказаны значения по умолчанию.
DATE + TIME + TIMEZONEИспользуется компонент DATE локального значения DATETIME.

Примеры

В следующем примере сравниваются результаты приведения строкового типа к каждому из типов данных date и time.

SELECT   
     CAST('2007-05-08 12:35:29. 1234567 +12:15' AS time(7)) AS 'time'   
    ,CAST('2007-05-08 12:35:29. 1234567 +12:15' AS date) AS 'date'   
    ,CAST('2007-05-08 12:35:29.123' AS smalldatetime) AS   
        'smalldatetime'   
    ,CAST('2007-05-08 12:35:29.123' AS datetime) AS 'datetime'   
    ,CAST('2007-05-08 12:35:29. 1234567 +12:15' AS datetime2(7)) AS   
        'datetime2'  
    ,CAST('2007-05-08 12:35:29.1234567 +12:15' AS datetimeoffset(7)) AS   
        'datetimeoffset';  

Результирующий набор:

Тип данныхВыходные данные
time12:35:29. 1234567
date2007-05-08
smalldatetime2007-05-08 12:35:00
datetime2007-05-08 12:35:29.123
datetime22007-05-08 12:35:29.1234567
datetimeoffset2007-05-08 12:35:29.1234567 +12:15

Впервые представлено в SQL Server 2008.

См. также раздел

Функции CAST и CONVERT (Transact-SQL)

Формат даты в SQL запросе

 
Draught   (2006-11-28 03:56) [0]

Есть таблица, в которой поле типа Дата, при простой выборке всех записей из таблицы видно, что дата передается как:
2006-11-23 00:00:00.0
2006-11-23 00:00:00.0
2006-11-24 00:00:00.0
2006-11-27 19:09:28.0
2006-11-27 19:09:28.0
2006-11-27 19:09:28. 0

т.е. как YYYY-MM-DD HH:MM:SS
но если мы желаем сделать выборку за период, т.е. что-то вроде
select * from table1 where Table1.Date between 2006-11-20 and 2006-11-25 получаем 0 результатов… причина проста, дату требуется передавать в формате Access, дата представлена в виде обычного числа, т.е. 24.11.2006=39045.

Следующий запрос позволяет делать выборку за период с 23 по 24.11.2006
select * from Table1
Where (Table1.Data between 39043 and 39045)

Вопрос: как передавать в запросе дату не конвертируя ее в число?

СУБД — MS Access
Delphi — BDS 2006


 
ЮЮ ©   (2006-11-28 04:17) [1]

поле типа Дата, при простой выборке всех записей из таблицы видно, что дата передается как:
Ключевое поле — видно. Это она так отображается. Причем способ отображения можно менять и настраивать. А хранится дата, как количество дней от некой даты, т.е. числом.

Чтобы не заморачиватться с символьным форматом представления дат, разным для разных БД, следует используй параметрический запрос:

select * from table1 where Table1.Date between :DateFrom and :DateTo

где параметры типа TDateTime


 
ЮЮ ©   (2006-11-28 04:21) [2]

а 2006-11-20 в твоем результате вычисляется как принято везде:
 2006 <минус> 11 <минус> 20
а записав 20/11/2006 получишь 20 <разделить на> 11 <разделить на> 2006
🙂

Cимвольное представление даты следует брать в кавычки, на то оно и символьное


 
Draught   (2006-11-28 04:21) [3]

так, а где описываются переменные DateFrom и DateTo?


 
Draught   (2006-11-28 04:27) [4]

так. ..

2006-11-22 — дата
22.11.2006 — тоже дата
а вот 39044 — число, точнее это тоже дата, только ее еще посчитать нужно

меня интересует вопрос, как избавиться от этого вот числа и передавать дату в более привычном виде?


 
ЮЮ ©   (2006-11-28 04:40) [5]

2006-11-22 — дата
22.11.2006 — тоже дата

врешь. попробуй второй вариант всунуть в свой запрос — огребешь ошибку синтаксиса.

а вот
«2006-11-22» и «22.11.2006» и «#22.11.2006#», «20061122» — символьные представления двты, которые могут быть, а могут и нет, переведены во внутреннее значение — 39044.

А перевод — дело тонкое.
01.03.06 можно интерпретировать и как 1 марта и как 3 января.

Это параметры. Присваиваются перед открытием запроса.

Какой комонет использутся для выполнения запроса?


 
ЮЮ ©   (2006-11-28 04:42) [6]

откуда у тебя в программе берутся эти числа в более привычном виде?


 
Draught   (2006-11-28 04:51) [7]

Все. .. разобрался…

Дату передаю через параметры ADOQuery, собсна использую DateFrom и DateTo — заработало 🙂

А что касается этих самых чисел — я запросы строю в Aqua Data Studio, так вот если там дату передавать как это самое число (см запрос в вопросе), то все работает…


 
Draught   (2006-11-28 04:51) [8]

Спасиб за помощь 🙂


 
ЮЮ ©   (2006-11-28 05:29) [9]


> апросы строю в Aqua Data Studio,

тогда символьное представление обрамляется символрм #, а не кавычками, а вот где nn mm и yy и какой символ разделителя — точно не знаю — эксперементируй.


 
Anatoly Podgoretsky ©   (2006-11-28 08:46) [10]

> Draught  (28. 11.2006 04:51:07)  [7]

> я запросы строю в Aqua Data Studio

Выбрось это и больше никогда не пользуйся


 
Anatoly Podgoretsky ©   (2006-11-28 08:47) [11]

> ЮЮ  (28.11.2006 05:29:09)  [9]

А экспериментируй, не экспериментируй, но против интелекта не попрешь.


 
LifeTime   (2006-11-28 16:55) [12]

А что? Вот так:
 CONVERT(DATETIME,"2006-10-02 00:00:00:000",102)
не помогает???


 
sniknik ©   (2006-11-28 18:02) [13]

LifeTime   (28.11.06 16:55) [12]
см. [0]
> СУБД — MS Access

и зачем конвертация в дельфи а после назад в sql сервере? параметры правильнее, было число, передали число и используется число. без всяких лишних операций.


Дата расчета в SQL расчета Онлайн коллекции

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

Детерминатив Функция: Значение, полученное в множестве наборов множества значений, или значений, которые могут быть рассмотрены.
Non-definitective функция: Она не может быть точно известна.

Функция даты и времени функции классифицируются по классификации двух типов, указанных выше:

1. Определить функцию:
[1] DateAdd()
Роль: На основании назначенной даты, возврат к новому DateTime

Грамматика:
DateAdd(datepart, number, date)

Параметр:
datepart
Указывается, какая часть дня возвращается к новому значению параметров. В следующей таблице перечислены даты и аббревиатуры распознавания Microsoft® SQL ServerTM.

number
Он используется для увеличения значения DATEPART. Если указанное не является целым числом, дробная часть этого значения будет отброшен.
Например, если вы укажете DAY для DATEPART, указать 1.75 на номер, и день будет увеличиваться 1.

date
Это выражение, которое возвращает тип DateTime или значение smalldatetime или строка формата даты.

Тип возвращаемого значения:
Возвращает DateTime, если параметр Дата является SmallDateTime, возвращает SmallDateTime.

Пример:
Этот пример выводит текущее время плюс 21 дней,
DateAdd(day, 21, GetDate())
Номер передается, больше, чем значение остальных дней этого месяца, а функция рассчитает сама.

[2] DateDiff()
эффект:
Возвращает количество границ даты и времени через два указанные даты.

Грамматика:
DateDiff(datepart, startDate, endDate)

Параметр:
datepart
DATEADD () Введенные этот параметр, здесь не описывается здесь, более поздние параметры DATEPART одинаковы.

startDate
Является ли расчетная дата начала StartDate это выражение, которое возвращает DateTime или SmallDateTime значение или строка формата даты.
Поскольку SmallDateTime точность только до минут, секунд и миллисекунд всегда 0 при использовании SmallDateTime.

endDate
Это расчетная дата. EndDate это выражение, которое возвращает значение DateTime или SmallDateTime или строку формата даты.

Тип возвращаемого значения:
int

объяснять:
StartDate вычитается из ENDDATE. Возвращайтесь отрицательное значение, если StartDate играется чем ENDDATE.
Когда диапазон целочисленного значения превышен, DATEDIFF генерирует ошибку.
Для миллисекунд, максимальное количество составляет 24 суток 20 часов 31 минут от 23.647 секунд.
Для секунд, максимальное количество составляет 68 лет.
Метод расчета границ через минуты, секунды и миллисекунды, так что результаты, приведенные в DATEDIFF соответствует во всех типах данных.
Результат является целым значением с положительным отрицательным, который равен границами DATEPART через первый и второй день.
Например, количество недель между 4 января (воскресенье) и 11 января (воскресенье) 1.

Пример:
select DateDiff(day, ‘2009-10-24’, GetDate())

[3] Day()
эффект:
Возвращает дату часть даты, которая представляет указанную дату.

Грамматика:
Day(date)

Параметр:
date
Тип типа DateTime или SmallDateTime является выражением.

Тип возвращаемого значения:
int

объяснять:
Эта функция эквивалентна DATEPART (DD, ДАТА)

Пример:
Следующий пример возвращает раздел Дня от 2009-10-4
select Day(‘2009-10-4’)
Получит 4, дата часть

[4] Month()
эффект:
Возвращает целое число, представляющее указанную дату месяца.

Грамматика:
Month(date)

Параметр:
date
Возвращает выражение значения или строки даты в формате DateTime или SmallDateTime.

Тип возвращаемого значения:
int

объяснять:
Эта функция эквивалентна DATEPART (мм, дата)

Пример:
Следующий пример возвращает раздел месяца от 2009-10-4
select Month(‘2009-10-4’)
Выйду 10, меню часть

[5] Year()
эффект:
Возвращает целое число, указывающее год в указанной дате.

Грамматика:
Year(date)

Параметр:
date
выражение типа DateTime или SmallDateTime.

Тип возвращаемого значения:
int

объяснять:
Эта функция эквивалентна DATEPART (YY, ДАТА)

Пример:
Следующий пример возвращает годовой балл с даты 2009-10-4
select Year(‘2009-10-4’)
Получите 2009, а именно год часть

2. Non-definitective функция:
[1] DateName()
эффект:
Возвращает строку, представляющую часть даты указанной даты.

Грамматика:
DateName(datepart, date)

Параметр:
datepart
С DateAdd ()

Тип возвращаемого значения:
nvarchar

объяснять:
SQL Server автоматически переключается между символами и значениями даты и времени, например, когда символ сравнивается со значением DateTime.

Пример:
Этот пример извлекает название месяца с даты вернулась из GetDate.
select DateName(month, GetDate())
Получить октября

[2] GetDate()
эффект:
Нажмите значение DateTime для возврата к текущей системной дате и времени в стандартном внутреннем формате Microsoft® SQL ServerTM.

Грамматика:
GetDate()

Тип возвращаемого значения:
DateTime

объяснять:
Функция даты можно использовать в списке выбора операторов SELECT, или в предложении WHERE запроса,
При разработке отчета, функция GetDate может быть использована для печати текущей даты и времени в каждом поколении отчетов.
GetDate также полезна для отслеживания деятельности, такие как время, которое происходит на определенный счет.

Пример:
A. Возвращает текущую дату и дату с GETDATE
Следующий пример выводит текущую дату и время:
select GetDate()

B. Использование GetDate в операторе CREATE TABLE
Следующий пример создает таблицу Employees и дает значение по умолчанию времени занятости работника с GetDate.
use Test
go

create table Employees (

  id int identity(1, 1),
  empName varchar(40) not null,
  createDtm DateTime default GetDate()

)
go

[3] GetUtcDate()
эффект:
Возвращает значение DateTime, указывающее текущее время UTC (мировые координаты или Гринвич стандартное время).
Текущее время UTC доступно из текущего местного времени и настроек в операционной системе компьютера под управлением SQL Server.

Грамматика:
GetUtcDate()

Тип возвращаемого значения:
DateTime

объяснять:
GetCDate — недетерминированная функция. Вид и экспрессия этого столбца не могут быть проиндексированы.
GetCDate не может использоваться в пользовательских функциях.

Последнее, что особенное, это дата ()
Существует детерминированная, кроме как для даты (DW, дата).
DW — дата часть рабочего дня.

эффект:
Возвращает функцию, которая представляет указанную дату часть указанной даты.

Грамматика:
DatePart(datepart, date)

Параметр:
datepart
Вот в будний день (DW), возвращаясь в число дней в день,
Например, воскресенье = 1, суббота = 7.
Количество разделов даты будней зависит от значения, установленного на DateFirst, эта команда устанавливает первый день в неделю.

date
Это выражение, которое возвращает значение DATETIME или SMALDATETETETIME или строку формата даты.

Тип возвращаемого значения:
int

объяснять:
День, месячные и годные функции эквивалентны на сегодняшний день (DD, дата), на сегодняшний день (мм, дата) и на сегодняшний день (YY, дата)

Пример:
Функция GETDATE возвращает текущую дату, однако, информация о полной дате не всегда требуется при сравнении, обычно только часть даты.
select DatePart(mm, GetDate()) as ‘Month Num’
go
Получить 10.

Типы данных и функции даты и времени — SQL Server (Transact-SQL)

  • Статья
  • 7 минут на чтение

Применимо к: SQL Server (все поддерживаемые версии) База данных SQL Azure Управляемый экземпляр Azure SQL Azure Synapse Analytics

Разделы этой статьи охватывают все типы данных и функции даты и времени Transact-SQL.

  • Типы данных даты и времени
  • Функции даты и времени
    • Функции, возвращающие системные значения даты и времени
    • Функции, которые возвращают части даты и времени
    • Функции, которые возвращают значения даты и времени из своих частей
    • Функции, возвращающие значения даты и разницы во времени
    • Функции, изменяющие значения даты и времени
    • Функции, которые устанавливают или возвращают функции формата сеанса
    • Функции, проверяющие значения даты и времени
  • Статьи, связанные с датой и временем

Типы данных даты и времени

Типы данных даты и времени Transact-SQL перечислены в следующей таблице:

Тип данных Формат Диапазон Точность Размер хранилища (байты) Определяемая пользователем точность долей секунды Смещение часового пояса
время чч:мм:сс[. nnnnnn] 00:00:00.0000000 до 23:59:59.9999999 100 наносекунд от 3 до 5 Да
дата ГГГГ-ММ-ДД 01-01-0001 по 31-12-9999 1 день 3
малая дата и время ГГГГ-ММ-ДД чч:мм:сс 1900-01-01 по 2079-06-06 1 минута 4
дата-время ГГГГ-ММ-ДД чч:мм:сс[.nnn] 1753-01-01 по 9999-12-31 0,00333 секунды 8
дата-время2 ГГГГ-ММ-ДД чч:мм:сс[.nnnnnn] 0001-01-01 00:00:00.0000000 до 9999-12-31 23:59:59.9999999 100 наносекунд от 6 до 8 Да
смещение даты и времени ГГГГ-ММ-ДД чч:мм:сс[.нннннн] [+|-]чч:мм 0001-01-01 00:00:00.0000000 до 9999-12-31 23:59:59. 9999999 (в формате UTC) 100 наносекунд от 8 до 10 Да Да

Примечание

Тип данных Transact-SQL rowversion не является типом данных даты или времени. метка времени является устаревшим синонимом для версия строки .

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

В следующих таблицах перечислены функции даты и времени Transact-SQL. Дополнительные сведения о детерминизме см. в разделе Детерминированные и недетерминированные функции.

Функции, возвращающие системные значения даты и времени

Transact-SQL извлекает все системные значения даты и времени из операционной системы компьютера, на котором работает экземпляр SQL Server.

Высокоточные системные функции даты и времени

Начиная с SQL Server 2008 (10.0.x), компонент Database Engine извлекает значения даты и времени с помощью Windows API GetSystemTimeAsFileTime(). Точность зависит от аппаратного обеспечения компьютера и версии Windows, на которой работает экземпляр SQL Server. Этот API имеет фиксированную точность в 100 наносекунд. Используйте Windows API GetSystemTimeAdjustment() для определения точности.

Функция Синтаксис Возвращаемое значение Тип возвращаемых данных Детерминизм
SYSDATETIME SYSDATETIME ( ) Возвращает значение datetime2(7) , содержащее дату и время компьютера, на котором работает экземпляр SQL Server. Возвращаемое значение не включает смещение часового пояса. дата/время2(7) Недетерминированный
SYSDATETIMEOFFSET SYSDATETIMEOFFSET ( ) Возвращает datetimeoffset(7) , содержащее дату и время компьютера, на котором работает экземпляр SQL Server. Возвращаемое значение включает смещение часового пояса. смещение даты и времени(7) Недетерминированный
SYSUTCDATETIME SYSUTCDATETIME ( ) Возвращает значение datetime2(7) , содержащее дату и время компьютера, на котором запущен экземпляр SQL Server. Функция возвращает значения даты и времени в виде времени UTC (Всемирное скоординированное время). дата/время2(7) Недетерминированный
Функции системной даты и времени более низкой точности
Функция Синтаксис Возвращаемое значение Тип возвращаемых данных Детерминизм
CURRENT_TIMESTAMP CURRENT_TIMESTAMP Возвращает значение datetime , содержащее дату и время компьютера, на котором работает экземпляр SQL Server. Возвращаемое значение не включает смещение часового пояса. дата-время Недетерминированный
ПОЛУЧИТЬДАТУ ПОЛУЧИТЬДАТУ ( ) Возвращает значение datetime , содержащее дату и время компьютера, на котором работает экземпляр SQL Server. Возвращаемое значение не включает смещение часового пояса. дата-время Недетерминированный
ПОЛУЧИТЬ ДАТУ ПОЛУЧИТЬ ДАТУ ( ) Возвращает дату и время , содержащее дату и время компьютера, на котором работает экземпляр SQL Server. Функция возвращает значения даты и времени в виде времени UTC (Всемирное скоординированное время). дата-время Недетерминированный

Функции, возвращающие части даты и времени

Функция Синтаксис Возвращаемое значение Тип возвращаемых данных Детерминизм
DATE_BUCKET DATE_BUCKET ( датапарт , номер , дата , происхождение ) Возвращает значение, соответствующее началу каждого сегмента даты и времени из метки времени, определенной параметром origin , или значением origin по умолчанию 1900-01-01 00:00:00. 000 , если параметр origin не указано. Тип возвращаемого значения зависит от аргумента, предоставленного для даты . Недетерминированный
ДАТАИМЯ ДАТАИМЯ ( датачасть , дата ) Возвращает строку символов, представляющую указанную датучасть указанной даты. нварчар Недетерминированный
ДАТАЧАСТЬ DATEPART ( датапарт , дата ) Возвращает целое число, представляющее указанную часть даты из указанных дата . Интервал Недетерминированный
ДАТЕТРУНК DATETRUNC ( дата, часть , дата, ) Возвращает входную дату , усеченную до указанной даты . Тип возвращаемого значения зависит от аргумента, предоставленного для даты . Недетерминированный
ДЕНЬ ДЕНЬ ( дата ) Возвращает целое число, представляющее дневную часть указанного числа 9.0342 дата . Интервал Детерминированный
МЕСЯЦ МЕСЯЦ ( дата ) Возвращает целое число, представляющее месячную часть указанной даты . Интервал Детерминированный
ГОД ГОД ( дата ) Возвращает целое число, представляющее часть года указанной даты . ряд Детерминированный

Функции, возвращающие значения даты и времени из своих частей

Функция Синтаксис Возвращаемое значение Тип возвращаемых данных Детерминизм
DATEFROMPARTS DATEFROMPARTS ( год , месяц , день ) Возвращает значение даты для указанного года, месяца и дня. дата Детерминированный
ДАТАВРЕМЯ2ОТ ЧАСТЕЙ DATETIME2FROMPARTS ( год , месяц , день , час , минута , секунд , дроби 3, точность ) Возвращает значение datetime2 для указанной даты и времени с указанной точностью. дата-время2 ( точность ) Детерминированный
ДАТАВРЕМЯ ОТ ЧАСТЕЙ DATETIMEFROMPARTS ( год , месяц , день , час , минута , секунды , миллисекунды ) Возвращает значение datetime для указанной даты и времени. дата-время Детерминированный
DATETIMEOFFSETFROMPARTS DATETIMEOFFSETFROMPARTS ( Год , Месяц , День , час , минута , секунд , Фракции , HOFFSET , MITEN_OFT_OFFESTERESE , , , . Возвращает значение datetimeoffset для указанной даты и времени с указанными смещениями и точностью. смещение даты и времени ( точность ) Детерминированный
SMALLDATETIMEFROMPARTS SMALLDATETIMEFROMPARTS ( год , месяц , день , час , минута ) Возвращает значение smalldatetime для указанных даты и времени. малая дата и время Детерминированный
TIMEFROMPARTS TIMEFROMPARTS ( час , минута , секунд , дроби , точность ) Возвращает значение time для указанного времени с указанной точностью. время( точность ) Детерминированный

Функции, возвращающие значения даты и разницы во времени

Функция Синтаксис Возвращаемое значение Тип возвращаемых данных Детерминизм
РАЗНИЦА ДАТЫ DATEDIFF ( datepart , startdate , enddate ) Возвращает количество дат или временных границ datepart , пересекаемых между двумя указанными датами. Интервал Детерминированный
DATEDIFF_BIG DATEDIFF_BIG ( datepart , startdate , enddate ) Возвращает количество дат или временных границ datepart , пересекаемых между двумя указанными датами. большое число Детерминированный

Функции, изменяющие значения даты и времени

Функция Синтаксис Возвращаемое значение Тип возвращаемых данных Детерминизм
ДАТАДОБАВИТЬ DATEADD ( датачасть , номер , дата ) Возвращает новое значение datetime , добавляя интервал к указанному дата часть указанной дата . Тип данных аргумента дата Детерминированный
КОНМЕСЯЦ КОНМЕСЯЦА ( start_date [ month_to_add ] ) Возвращает последний день месяца, содержащего указанную дату, с необязательным смещением. Тип возвращаемого значения — это тип аргумента start_date или тип данных date . Детерминированный
СМЕЩЕНИЕ ПЕРЕКЛЮЧАТЕЛЯ SWITCHOFFSET ( DATETIMEOFFSET , часовой пояс ) SWITCHOFFSET изменяет смещение часового пояса значения DATETIMEOFFSET и сохраняет значение UTC. datetimeoffset с дробной точностью DATETIMEOFFSET Детерминированный
TODATETIMEOFFSET TODATETIMEOFFSET ( выражение , часовой пояс ) TODATETIMEOFFSET преобразует значение datetime2 в значение datetimeoffset. TODATETIMEOFFSET интерпретирует значение datetime2 по местному времени для указанного часового пояса. datetimeoffset с дробной точностью аргумента datetime Детерминированный

Функции, которые устанавливают или возвращают функции формата сеанса

Функция Синтаксис Возвращаемое значение Тип возвращаемых данных Детерминизм
@@DATEFIRST @@DATEFIRST Возвращает текущее значение для сеанса SET DATEFIRST. крошечный Недетерминированный
УСТАНОВИТЬ ПЕРВУЮ ДАТУ УСТАНОВИТЬ ДАТУПЕРВЫЙ { номер | @ номер_переменная } Устанавливает первый день недели в число от 1 до 7. Неприменимо Неприменимо
УСТАНОВИТЬ ФОРМАТ ДАТЫ УСТАНОВИТЬ ФОРМАТ ДАТЫ { формат | @ format_var } Устанавливает порядок частей даты (месяц/день/год) для ввода данных datetime или smalldatetime . Неприменимо Неприменимо
@@ЯЗЫК @@ЯЗЫК Возвращает название используемого языка. @@LANGUAGE не является функцией даты или времени. Однако настройка языка может повлиять на вывод функций даты. Неприменимо Неприменимо
НАСТРОЙКА ЯЗЫКА УСТАНОВИТЬ ЯЗЫК { [ N ] язык | @ языковая_переменная } Задает языковую среду для сеанса и системных сообщений. SET LANGUAGE не является функцией даты или времени. Однако настройка языка влияет на вывод функций даты. Неприменимо Неприменимо
sp_helplanguage sp_helplanguage [ [ @language = ] язык ] Возвращает информацию о форматах даты для всех поддерживаемых языков. sp_helplanguage не является хранимой процедурой даты или времени. Однако настройка языка влияет на вывод функций даты. Неприменимо Неприменимо

Функции, проверяющие значения даты и времени

Функция Синтаксис Возвращаемое значение Тип возвращаемых данных Детерминизм
ИСДАТА ISDATE (выражение ) Определяет, имеет ли входное выражение datetime или smalldatetime допустимое значение даты или времени. Интервал ISDATE является детерминированным, используется только с функцией CONVERT, когда указан параметр стиля CONVERT и когда стиль не равен 0, 100, 9, или 109.
Артикул Описание
ФОРМАТ Возвращает значение, отформатированное в указанном формате и с необязательным языком и региональными параметрами. Используйте функцию FORMAT для форматирования дат/времени и числовых значений в виде строк с учетом региональных настроек.
ПРИведение и ПРЕОБРАЗОВАНИЕ (Transact-SQL) Предоставляет информацию о преобразовании значений даты и времени в строковые литералы и из них, а также в других форматах даты и времени.
Запись международных операторов Transact-SQL Содержит рекомендации по переносу баз данных и приложений баз данных, использующих операторы Transact-SQL с одного языка на другой или поддерживающих несколько языков.
Скалярные функции ODBC (Transact-SQL) Предоставляет информацию о скалярных функциях ODBC, доступных для использования в инструкциях Transact-SQL. Сюда входят функции даты и времени ODBC.
В ЧАСОВОМ ПОЯСЕ (Transact-SQL) Обеспечивает преобразование часового пояса.

См. также

  • Функции
  • Типы данных (Transact-SQL)

Формат даты SQL | Расширенный SQL

Начиная здесь? Этот урок является частью полного учебника по использованию SQL для анализа данных. Проверьте начало.

В этом уроке мы рассмотрим:

  • Почему даты форматируются по первому году
  • Сумасшедшие правила для даты и времени
  • Практическая задача

В этом уроке используются те же данные из предыдущих уроков, которые были получены из Crunchbase 5 февраля 2014 г. Узнайте больше об этом наборе данных.

Почему даты форматируются по первому году

Если вы живете в Соединенных Штатах, вы, вероятно, привыкли видеть даты в формате ММ-ДД-ГГГГ или в подобном формате, с первым месяцем. Это странное соглашение по сравнению с остальными мировыми стандартами, но оно не обязательно хуже, чем ДД-ММ-ГГГГ. Проблема с обоими этими форматами заключается в том, что когда они хранятся в виде строк, они не сортируются в хронологическом порядке. Например, вот поле даты, сохраненное в виде строки. Поскольку месяц указан первым, число Оператор ORDER BY не создает хронологический список:

 SELECT постоянная ссылка,
       основан_в
  ОТ tutorial.crunchbase_companies_clean_date
 ЗАКАЗАТЬ
 

Вы можете подумать, что преобразование этих значений из строки в даты может решить проблему, но на самом деле это не так просто. Mode (и большинство реляционных баз данных) форматируют даты как ГГГГ-ММ-ДД, формат, который имеет большой смысл, поскольку он будет сортировать в одном и том же порядке независимо от того, хранится ли он как дата или как строка. Excel известен тем, что создает форматы даты, которые плохо работают с другими системами, поэтому, если вы экспортируете файлы Excel в CSV и загружаете их в Mode, вы можете часто сталкиваться с этим.

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

 SELECT постоянная ссылка,
       основан_в,
       Основанный_в_чистом
  ОТ tutorial.crunchbase_companies_clean_date
 ЗАКАЗАТЬ
 

Урок по очистке данных содержит несколько примеров преобразования плохо отформатированных дат в поля с правильным форматом даты.

Сумасшедшие правила для даты и времени

Предполагая, что некоторые даты правильно сохранены в виде типа данных date или time , вы можете делать довольно мощные вещи. Возможно, вы хотите вычислить поле дат через неделю после существующего поля. Или, может быть, вы хотите создать поле, которое указывает, сколько дней различаются между значениями в двух других полях даты. Это тривиально просто, но важно помнить, что тип данных ваших результатов будет зависеть от того, что именно вы делаете с датами.

Когда вы выполняете арифметические действия с датами (например, вычитаете одну дату из другой), результаты часто сохраняются как тип данных interval — ряд целых чисел, представляющих период времени. В следующем запросе используется вычитание дат, чтобы определить, сколько времени потребовалось для приобретения компаний (неприобретенные компании и компании без введенных дат были отфильтрованы). Обратите внимание, что поскольку столбец company.founded_at_clean хранится в виде строки, его необходимо преобразовать в метку времени, прежде чем его можно будет вычесть из другой метки времени.

 ВЫБЕРИТЕ компании.постоянная ссылка,
       компании.founded_at_clean,
       приобретения.приобретенные_при_очистке,
       приобретения.acquired_at_cleaned -
         company.founded_at_clean::timestamp AS time_to_acquisition
  ИЗ tutorial. crunchbase_companies_clean_date компании
  ПРИСОЕДИНЯЙТЕСЬ tutorial.crunchbase_acquisitions_clean_date приобретения
    ON Acquisitions.company_permalink = company.permalink
 ГДЕ found_at_clean НЕ НУЛЕВОЕ
 

В приведенном выше примере вы можете видеть, что 9Столбец 0354 time_to_acquisition — это интервал, а не другая дата.

Интервалы можно ввести также с помощью функции ИНТЕРВАЛ :

 ВЫБОР компаний.постоянная ссылка,
       компании.founded_at_clean,
       компании.founded_at_clean::timestamp +
         INTERVAL '1 неделя' AS plus_one_week
  ИЗ tutorial.crunchbase_companies_clean_date компании
 ГДЕ found_at_clean НЕ НУЛЕВОЕ
 

Интервал определяется с использованием простых английских терминов, таких как «10 секунд» или «5 месяцев». Также обратите внимание, что добавление или вычитание 9Столбец даты 0354 и столбец интервала приводят к другому столбцу даты , как в приведенном выше запросе.

Вы можете добавить текущее время (на момент запуска запроса) в свой код с помощью функции NOW() :

 SELECT company. permalink,
       компании.founded_at_clean,
       СЕЙЧАС() - company.founded_at_clean::timestamp КАК основано_время_назад
  ИЗ tutorial.crunchbase_companies_clean_date компании
 ГДЕ found_at_clean НЕ НУЛЕВОЕ
 

Отточите свои навыки работы с SQL

Если вы хотите углубиться и проверить свои навыки, изучите наши 7 способов использования функций даты для бизнес-анализа и выполните практическую задачу ниже:

Практическая задача

Напишите запрос, который подсчитывает количество компаний, приобретенных за 3 года, 5 лет и 10 лет с момента основания (в 3 отдельных столбцах). Также включите столбец для общего количества приобретенных компаний. Сгруппируйте по категориям и ограничьтесь только строками с датой основания.

ПопробуйтеСмотреть ответ

Формат даты в SQL — Формат даты и времени SQL

ФОРМАТ ДАТЫ в SQL — ФОРМАТ SQL ()

Эта функция FORMAT () в SQL используется для форматирования поля, чтобы быть приводится в отображаемый стандартный формат.

Ниже приведен синтаксис функции форматирования:

 SELECT FORMAT (имя_столбца, формат) ИЗ имени таблицы; 

Здесь имя_столбца – говорит об основании, на котором требуется форматирование. И формат – определяет макет

Пример таблицы: Покупки

MerchandiseName Стоимость Дата
 ВЫБЕРИТЕ НАЗВАНИЕ ТОВАРА, СТОИМОСТЬ, ФОРМАТ (Сейчас (), 'ГГГГ-ММ-ДД') AS PerDate FROM Merchandise; 

В приведенном выше примере выбирается любой товар из столбца с именем MerchandiseName и стоимость на конкретную дату дня из таблицы Shopping.

ФОРМАТ ДАТЫ в SQL

Функция DATE_FORMAT() возвращает значение, отформатированное в указанном формате. Он используется для языкового форматирования даты/времени и числовых значений в виде строк. Давайте разберемся с этим ниже:

DATE_FORMAT ()

Это функция SQL-сервера. Формат даты в SQL используется для отображения времени и даты в нескольких макетах и ​​представлениях.

Синтаксис

 DATE_FORMAT (дата, формат) 

– Где дата является подходящей датой, а  Формат говорит о представленном макете.

У нас есть идеальный профессиональный курс сертификации SQL для вас!

Функции формата даты SQL

В SQL при работе с базой данных формат даты в таблице должен совпадать с датой ввода. Теперь в SQL присутствуют определенные функции формата даты по умолчанию. Ниже приведены некоторые функции даты SQL по умолчанию: .

  • СЕЙЧАС () — возвращает текущую дату и время
  • CURTIME() — Возвращает текущее время
  • EXTRACT() — возвращает одну часть даты/времени
  • DATE_SUB() – вычитает указанный временной интервал из даты
  • .
  • DATE_FORMAT() — отображает данные даты/времени в разных форматах
  • DATEDIFF () – возвращает количество дней между двумя датами.
  • DATE_ADD() — добавляет указанный интервал времени к дате
  • .
  • DATE() — извлекает часть даты из даты или выражения даты/времени.
  • CURDATE() — возвращает текущую дату
  • .

Функции даты SQL

Существует несколько функций даты SQL, но не все они используются в основном. Существуют определенные функции даты SQL, которые часто используются. Вот некоторые из этих функций SQL Date по умолчанию:

  • GETDATE () — возвращает время между двумя датами
  • .
  • DATEADD () — добавляет или вычитает указанный интервал времени из даты
  • CONVERT () — отображает данные даты/времени в различных форматах. Он преобразует формат даты в SQL
  • .
  • DATEPART () — возвращает одну часть даты/времени
  • DATEDIFF () – возвращает текущую дату и время.

Типы данных даты SQL

Для хранения даты и времени используются следующие типы данных:

  • ДАТА – в формате ГГГГ-ММ-ДД в SQL
  • ГОД – в формате ГГГГ или ГГ в SQL
  • .
  • TIMESTAMP — в формате ГГГГ-ММ-ДД ЧЧ: MI:СС в SQL
  • DATETIME – в формате ГГГГ-ММ-ДД ЧЧ: МИ: СС в SQL

Хотите пройти сертификацию по SQL! Изучайте SQL у лучших экспертов по SQL и добейтесь успеха в своей карьере благодаря сертификации Intellipaat по SQL.

Получите 100% повышение!

Осваивайте самые востребованные навыки прямо сейчас!

Формат даты и времени в SQL

Типы данных даты и времени

Типы формата даты указаны в таблице ниже: Точность Размер хранилища (байты) Определяемая пользователем точность долей секунды Смещение часового пояса время 100 наносекунд от 3 до 5 да нет дата 1 день 3 нет малая дата и время 1 минута 4 нет нет дата время 0,00333 секунды 8 нет нет дата-время2100 наносекунд от 6 до 8 да нет смещение даты и времени 100 наносекунд от 8 до 10 да да

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

Функция Синтаксис Тип возвращаемых данных Детерминированный
SYSDATETIME SYSDATETIME () дата/время2(7)
SYSDATETIMEOFFSET SYSDATETIMEOFFSET ( ) смещение даты и времени(7)
SYSUTCDATETIME SYSUTCDATETIME ( ) дата/время2(7)

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

Функция Синтаксис Тип возвращаемых данных Детерминированный
SYSDATETIME SYSDATETIME () дата/время2(7)
SYSDATETIMEOFFSET SYSDATETIMEOFFSET ( ) смещение даты и времени(7)
SYSUTCDATETIME SYSUTCDATETIME ( ) дата/время2(7)

Приходите в сообщество Intellipaat SQL, если у вас есть еще вопросы по SQL!

Функции для получения частей даты и времени

Функция Синтаксис Тип возвращаемых данных Детерминированный
ДАТАИМЯ ДАТАИМЯ (  датачасть  , дата  ) нварчар
ДАТАЧАСТЬ DATEPART (  datepart  , datepart  ) Интервал
ДЕНЬ ДЕНЬ (  дата  ) Интервал Да
МЕСЯЦ МЕСЯЦ (  дата  ) Интервал Да
ГОД ГОД (  дата  ) Интервал Да

Функции для получения значений даты и времени из своих частей

Функция Синтаксис Тип возвращаемых данных Детерминированный
ДАТАФРОМПАРТС DATEFROMPARTS (  год , месяц , день ) дата Детерминированный
ДАТАВРЕМЯ2ОТ ЧАСТЕЙ DateTime2Fromparts
( год , месяц , День , час , минута , Секунды , , Секунды , , 70343, , , , .
дата-время2
(   точность   )
Детерминированный
ДАТАВРЕМЯ ОТ ЧАСТЕЙ DATETIMEFROMPARTS
( год , месяц , день , час , минута , секунды , 7 90 4 миллисекунды 9 )
дата-время Детерминированный
DATETIMEOFFSETFROMPARTS DATETIMEOFFSETFROMPARTS ( год , месяц , день , час , минута , секунд ,
дроби часовое_смещение , минутное_смещение точность  )
дата-время
(   точность   )
Детерминированный
SMALLDATETIMEFROMPARTS SMALLDATETIMEFROMPARTS
( год , месяц , день , час , минута )
малая дата и время Детерминированный
TIMEFROMPARTS TIMEFROMPARTS
( час , минута , секунд , дроби , точность  )
время
(   точность   )
Детерминированный

Смена карьеры

Функции, получающие разницу во времени и дате

Функция Синтаксис Тип возвращаемых данных Детерминированный
РАЗНИЦА ДАТЫ DATEDIFF (  datepart  , startdate  ,  enddate  ) Интервал Детерминированный
DATEDIFF_BIG DATEDIFF_BIG (  datepart  , startdate  ,  enddate  ) большойинт Детерминированный

Функции, изменяющие значения даты и времени

Функция Синтаксис Тип возвращаемых данных Детерминированный
ДАТАДОБАВИТЬ DATEADD ( дата, часть , номер , дата ) Тип данных аргумента  даты Детерминированный
КОНМЕСЯЦ КОНМЕСЯЦА ( start_date  [ month_to_add  ] ) Тип возвращаемого значения — это тип start_date  или date . Детерминированный
СМЕЩЕНИЕ ПЕРЕКЛЮЧАТЕЛЯ ПЕРЕКЛЮЧАТЕЛЬ СМЕЩЕНИЕ ( DATETIMEOFFSET , часовой пояс ) datetimeoffset  с дробной точностью DATETIMEOFFSET Детерминированный
TODATETIMEOFFSET TODATETIMEOFFSET ( выражение  , часовой пояс ) datetimeoffset  с дробной точностью аргумента datetime   Детерминированный

Подготовьтесь к работе в отрасли, ответив на эти лучшие вопросы и ответы на собеседовании по SQL!

Функции, которые устанавливают или получают формат сеанса

Функция Синтаксис Детерминированный
@@DATEFIRST @@DATEFIRST Недетерминированный
УСТАНОВИТЬ ПЕРВУЮ ДАТУ УСТАНОВИТЬ ДАТУПЕРВОГО { номер  | @ число_переменная  } Неприменимо
УСТАНОВИТЬ ФОРМАТ ДАТЫ УСТАНОВИТЬ ФОРМАТ ДАТЫ { формат  | @ format_var  } Неприменимо
@@ЯЗЫК @@ЯЗЫК Неприменимо
НАСТРОЙКА ЯЗЫКА УСТАНОВИТЬ ЯЗЫК { [ N ]  язык  | @ language_var  } Неприменимо
sp_helplanguage sp_helplanguage  [ [  @language =  ] язык  ] Неприменимо

Функции, подтверждающие значения даты и времени

Функция Синтаксис Тип возвращаемых данных Детерминированный
ИСДАТА ISDATE ( выражение  ) Интервал Да

Средство форматирования SQL-запросов

В нем описывается, как мы должны форматировать наши SQL-запросы для создания окончательного отчета.