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

Аргументы функций даты и времени имеют тип DATE. За исключением функции        которая возвращает значение типа NUMBER, все функции возвращают значения типа DATE. В этом разделе рассматриваются также арифметические операции над датами. Функции даты и времени описываются в следующей таблице.

ADD_MONTHS(d, х)

Возвращает дату плюс х месяцев. Аргумент х может быть любым целым числом. Если в получаемом месяце число дней меньше, чем в месяце d, то возвращается последний день месяца-результата. Если число дней не меньше, то день месяца-результата и день месяца d совпадают. Временные компоненты даты d и результата одинаковы.

CURRENTDATE        

Возвращает текущую дату во временной зоне сеанса как значение типа DATE. Эта функция аналогична SYSDATT за исключением того, что SYSDATE не зависит от временной зоны текущего сеанса.

CURRENTJIMESTAMP

Возвращает текущую дату во временной зоне сеанса как значение WITH TIMEZ0NE.

Если задан параметр precision (точность), он представляет десятичную точность возвращаемого числа секунд; по умолчанию используется 6.

DBTIMEZONE

Возвращает временную зону базы данных. Используется такой же формат, как и в операторе CREATE DATABASE или в самом последнем операторе ALTER DATABASE.

EXTRACT({YEAR. MONTH, DAY,

HOUR, MINUTE, SECOND,  

TIMEZONE HOUR,

TIMEZONE_MINUTE,

TIMEZONE REGION,

TIMEZONE_ABBR} FROM

datetime_or_interval)

Возвращает выбранные данные из параметра datetime_or_interval, 

который должен быть выра­жением типа DATE, DATETIME или INTERVAL Запрашиваемое поле должно быть допустимым -например, нельзя извлечь TIMEZONE из значения DATE. Если поле недопустимо, Oracle* будет порождать ошибку «ORA-30076: invalid extract field for extract source».

LAST_DAY(d)

Возвращает последний день месяца, содержащего d.  Эту функцию можно применять для определения количества дней, оставшихся в текущем месяце.

LOCALTIMESTAMP

Возвращает текущую дату во временной зоне сеанса как значение типа TIMESTAMP. Если определен параметр 

precision, он представляет десятичную точность числа возвращаемых секунд; по умолчанию используется 6. LOCALTIMESTAMP возвращает значение TIMESTAMP, в то время как CURRENTJIMESTAMP возвращает значение TIMESTAMP WITH TIMEZONE.

MONTHS_BETWEEN

Возвращает число месяцев между датой и датой date2. Если дни в date2 совпада­ют или если обе даты являются последними днями своих месяцев, то результат представляет собой целое число. В противном случае результат будет содержать дробную часть (в отноше­нии к 31-дневному месяцу).

NEW_TIME

Возвращает дату и время часового пояса zone2 для даты и времени часового пояса 

zonel, заданных значением d. Zone 1 и zone2 — это строки символов, их возможные значения приведены в таблице 5.1. В Oracle можно определить дополнительные имена временных зон с помощью представления v$timezone_names.

NEXT_DAY

Возвращает в string дату первого дня, наступающего после даты d. Строка string указывает день недели на языке текущего сеанса. Временной компонент возвращаемого значения тот же, что и временной компонент 

d. Регистр символов строки значения не имеет.

ROUND

Округляет дату d до единицы измерения, указанной в format. Форматы, применяемые в функциях ROUND и TRUNC, описаны в таблице 5.2. Если формат не указан, принимается формат по умолчанию ‘DD’, который округляет d до ближайшего дня.

SESSIONTIMEZONE

Возвращает часовой пояс текущего сеанса. Возвращаемый тип является строкой символов, представляющей либо смещение часового пояса, либо региональное название часового пояса. Формат (если указан) тот же самый, что применяется в последнем операторе ALTER SESSION.

SYS_EXTRACT_UTC(

Возвращает время в UTC (Универсальное координированное время, ранее — Среднее время по Гринвичу) из предоставленного параметра datetime, который должен включать в себя часовой пояс.

SYSDATE

Возвращает текущие дату и время в формате типа DATE. Аргументов нет. При использовании в распределенных SQL-операторах функция SYSDATE возвращает дату и время локальной базы данных.

SYSTIMESTAMP

Возвращает текущие дату и время в формате типа TIMESTAMP WITH TIMEZONE.

При использовании в распределенных SQL-операторах SYSTIMESTAMP возвращает дату

и время локальной базы данных.

TRUNC

Возвращает дату d, усеченную до единицы измерения, указанной с помощью format. Применяются те же форматы, что и в функции ROUND (см. таблицу 5.2). Если formaf опущен, принимается формат по умолчанию ‘DD’, который усекает d до ближайшего дня.

TZ_OFFSET

Возвращает в виде строки символов смещение между заданным часовым поясом timezone и UTC. Аргумент timezone можно определить либо как название часового пояса (см. таблицу 5.1 или представление v$timezone_names), 

либо как смещение в формате +/-НН:МГ. Также могут использоваться функции SESSIONTIMEZONE и DBTIMEZONE. 

Арифметические операции с датами и временем

Выполнение арифметических операций над датами (d). датами и време­нем (dt), интервалами (г) и числами (га) описывается в таблице 5.3. Обра­тите внимание, что при вычитании одной даты из другой результатом является число.

Примеры использования арифметических операций с датами и време­нем можно найти в документации Oracle.

< Предыдущая   Следующая >

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

Краткий обзор основных функций для работы с датой и временем представлен в таблице.

Таблица 11.3.

DATEADD

добавляет к дате указанное значение дней, месяцев, часов и т.д.

DATEDIFF

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

DATENAME

выделяет из даты указанную часть и возвращает ее в символьном формате

DATEPART

выделяет из даты указанную часть и возвращает ее в числовом формате

DAY

возвращает число из указанной даты

GETDATE

возвращает текущее системное время

ISDATE

проверяет правильность выражения на соответствие одному из возможных форматов ввода даты

MONTH

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

YEAR

возвращает значение года из указанной даты

SELECT Year(Дата) AS Год, Month(Дата)

AS Месяц,

Sum(Количество) AS Общ_Количество

FROM Сделка

GROUP BY Year(Дата), Month(Дата)

Пример 11.

6. Использование функций YEAR и MONTH для определения общего количества товара, проданного за каждый месяц каждого года.

DECLARE @d DATETIME

DECLARE @y INT

SET @d=’29.10.03’

SET @y=DATEPART(yy,@d)

SELECT @y

Вопрос 30 Хранимые процедуры в среде ms sql Server

При работе с SQL Server пользователи могут создавать собственные процедуры, реализующие те или иные действия. Хранимые процедуры являются полноценными объектами базы данных, а потому каждая из них хранится в конкретной базе данных. Непосредственный вызов хранимой процедуры возможен, только если он осуществляется в контексте той базы данных, где находится процедура.

Типы хранимых процедур

В SQL Server имеется несколько типов 

хранимых процедур.

  • Системные хранимые процедуры предназначены для выполнения различных административных действий. Практически все действия по администрированию сервера выполняются с их помощью. Можно сказать, что системные хранимые процедурыявляются интерфейсом, обеспечивающим работу с системными таблицами, которая, в конечном счете, сводится к изменению, добавлению, удалению и выборке данных из системных таблиц как пользовательских, так и системных баз данных. Системные хранимые процедуры имеют префикс sp_, хранятся в системной базе данных и могут быть вызваны в контексте любой другой базы данных.

  • Пользовательские хранимые процедуры реализуют те или иные действия. Хранимые процедуры – полноценный объект базы данных. Вследствие этого каждая хранимая процедура располагается в конкретной базе данных, где и выполняется.

  • Временные хранимые процедуры существуют лишь некоторое время, после чего автоматически уничтожаются сервером. Они делятся на локальные и глобальные. Локальные временные хранимые процедуры могут быть вызваны только из того соединения, в котором созданы. При создании такой процедуры ей необходимо дать имя, начинающееся с одного символа #. Как и все временные объекты, хранимые процедуры этого типа автоматически удаляются при отключении пользователя, перезапуске или остановке сервера. Глобальные временные хранимые процедуры доступны для любых соединений сервера, на котором имеется такая же процедура. Для ее определения достаточно дать ей имя, начинающееся с символов ##. Удаляются эти процедуры при перезапуске или остановке сервера, а также при закрытии соединения, в контексте которого они были созданы.

Работа с датами | SQL Tutorial Documentation on data.world

Concepts/Intermediate/

Введение в работу с датами.

SQL имеет несколько встроенных функций для управления данными даты в полях. Некоторые из наиболее распространенных: DATE_DIFF , DATE_ADD , NOW и DATE_PART

.

Полный список функций даты см. в справочном разделе.

DATE_DIFF

DATE_DIFF возвращает разницу между двумя значениями даты или даты и времени в виде заданная единица времени. Он принимает три аргумента: дату начала, дату окончания дату и единицу продолжительности (один из «год», «десятилетие», «столетие», «квартал», «месяц», «неделя», «день», «час», «минута», «секунда» или «миллисекунда»).

Если бы мы хотели узнать, сколько сделок потребовалось для закрытия более 135 дней в нашем конвейер сделки, мы могли бы запустить запрос:

 ВЫБЕРИТЕ учетную запись,
       агент по продажам,
       DATE_DIFF(created_date, close_date, "день") AS `дни до закрытия`
  ОТ sales_pipeline
 ГДЕ DATE_DIFF(дата_создания, дата_закрытия, "день") > 135 

siyeh/sql-crm-example-data Выполнить запрос Скопировать код

И результаты будут выглядеть так:

счет агент по продажам дней до закрытия
Исдом Дарсель Шлехт 137
Склад Дарсель Шлехт 138
Funholding Ниша Хаффинс 136
Гогозум Анна Снеллинг 136
Хоттечи Моисей Фрейз 137
Zotware Гаррет Киндер 137
Кодхау Глэдис Колклаф 136
Vehement Capital Partners Кэсси Кресс 138

Мы также можем объединить DATE_DIFF с AVG , чтобы узнать среднее количество дней сделки в пайплайне понадобились для закрытия:

 SELECT AVG(DATE_DIFF(created_date, close_date, "день"))
  ОТ sales_pipeline 

siyeh/sql-crm-example-data Выполнить запрос Скопировать код

среднее
49,99

DATE_ADD берет дату и добавляет к ней указанное количество времени. Как с DATE_DIFF , добавленное время может быть любым из следующих: «год», «декада», «столетие», «квартал», «месяц», «неделя», «день», «час», «минута», «секунда» или «миллисекунда».

Число, которое мы получили в среднем за дни до закрытия из последнего запроса, может быть объединено с функцией DATE_ADD, чтобы увидеть, какие сделки заняли больше времени, чем в среднем закрыть:

 ВЫБЕРИТЕ учетную запись,
      агент по продажам,
      DATE_DIFF(дата_создания, дата_закрытия, "день") КАК `дни до закрытия`,
      Дата создания,
      close_date
 ОТ sales_pipeline
ГДЕ DATE_ADD(sales_pipeline.created_date, 50, "день") < close_date 

siyeh/sql-crm-example-data Выполнить запрос Скопировать код

счет агент по продажам дней до закрытия дата создания закрыть_дата
Кансити Моисей Фрейз 132 20. 10.2016 01.03.2017
Исдом Дарсель Шлехт 137 25.10.2016 11.03.2017
Биохолдинг Анна Снеллинг 126 04.11.2016 10.03.2017
Донквадтех Вайолет Маклелланд 101 25.11.2016 06.03.2017
The New York Inquirer Борис Фаз 89 22.02.2017 22.05.2017
Вехемент Капитал Партнерс Корлисс Косме 106 22.02.2017 08.06.2017
Зенкорпорейшн Корлисс Косме 126 22.02.2017 28.06.2017
Сумаче Даниэль Хамак 84 22.02.2017 17.05.2017

СЕЙЧАС

Функция СЕЙЧАС возвращает текущую дату и время, предоставляя отметку времени для запрос:

 ВЫБЕРИТЕ СЕЙЧАС() 

siyeh/sql-crm-example-data Выполнить запрос Скопировать код

теперь
2018-01-10T16:06:20. 623Z

NOW также можно комбинировать с другими функциями даты, такими как DATE_ADD и DATE_DIFF. Например, если мы хотим узнать возраст в днях всех сделок, которые мы в процессе, мы могли бы запустить следующий запрос:

 ВЫБЕРИТЕ учетную запись,
       агент по продажам,
       DATE_DIFF(created_date, NOW(), "день") AS `дни открытия`,
       Дата создания
  ОТ sales_pipeline
 ГДЕ sales_pipeline.deal_stage = "Выполняется"
       И учетная запись НЕ НУЛЕВАЯ 

siyeh/sql-crm-example-data Выполнить запрос Скопировать код

счет агент по продажам дней открытых дата создания
Фашехатице Даниэль Хамак 322 22.02.2017
Рундофазе Вики Лафламм 322 22.02. 2017
Опентек Маркита Хансен 409 27.11.2016
Блэкзим Кэри Хендрикссон 318 26.02.2017
Компания Блут Морин Маркано 318 26.02.2017
Y-корпорация Даниэль Хамак 317 27.02.2017
Биоплекс Морин Маркано 316 28.02.2017
Киннамплюс Борис Фаз 315 ​​ 01.03.2017

ДАТА_ЧАСТЬ

DATE_PART — это функция, которая возвращает числовое значение для части даты или значение даты и времени. Нравится DATE_ADD и DATE_DIFF , DATE_PART принимает разные единиц в качестве одного из его аргументов. Типы единиц, распознаваемые DATE_PART : «Часовой пояс», «Часовой пояс-час», «Часовой пояс-минута», «Год», «Десятилетие», «Век», «квартал», «месяц», «неделя», «день», «день недели», «день года», «час», «минута», «секунда» и «миллисекунда».

Хотя в нашем наборе данных есть поля для даты создания и даты закрытия, не за квартал, в котором были открыты или закрыты сделки. Если бы мы хотели узнать, в каких кварталах были заключены самые крупные сделки, мы могли бы запустить такой запрос, как это:

 ВЫБЕРИТЕ учетную запись,
       агент по продажам,
       DATE_PART("квартал", close_date) КАК квартал,
       ГОД(конвейер_продаж.close_date),
       close_value
  ОТ sales_pipeline
 ГДЕ sales_pipeline.deal_stage = "Выиграл"
 ЗАКАЗАТЬ ПО close_value DESC 

siyeh/sql-crm-example-data Выполнить запрос Скопировать код

Функция ГОД , которая использовалась в последнем запросе, является одной других функций даты и времени, описанных в справочном разделе.

Результаты которого выглядят так:

счет агент по продажам квартал год близкое_значение
Грувстрит Розалина Дитер 2 2017 30 288
Гудсилрон Маркита Хансен 2 2017 29 617
Xx-холдинг Освобождение Глюка 4 2017 29 220
Ура Маркита Хансен 3 2017 29 166
Ура Элиз Глюк 4 2017 27 971
Лабдрил Элиз Глюк 2 2017 27 385
Xx-холдинг Розалина Дитер 4 2017 26 186
Зумит Элиз Глюк 1 2017 25 897
Кан-код Розалина Дитер 3 2017 25 791
Ура Элиз Глюк 2 2017 25 464
Y-корпорация Розалина Дитер 2 2017 25 288
Плексзап Элиз Глюк 2 2017 24 949

Упражнения (продолжение предыдущего раздела)

Эти упражнения можно выполнять двумя способами. Первый — использовать ссылки «Попробовать запрос», чтобы проверить свои запросы без их сохранения. Второй — создать проект data.world и сохранить в нем свои запросы. Если вы читаете эту документацию и выполняете упражнения в качестве руководства, вам нужно будет создать собственный проект, чтобы сохранить свою работу. Подробности и инструкции находятся в учебнике по SQL, в котором есть инструкции по настройке вашего проекта и ссылки на все текущие упражнения.

класс>
Упражнение 32

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

Попробуйте запрос

Подсказка

ВЫБЕРИТЕ столбцы пациент, дата рождения, дата смерти, и найдите возраст человека на момент смерти, используя DATE_DIFF в столбцах (дата рождения, и , дата смерти, со значением, представленным в «годах») . Пометьте столбец результатов AS `возраст на момент смерти` . Выберите столбцы FROM таблицу пациентов и верните только записи WHERE дата смерти IS NOT NULL . ЗАКАЗАТЬ ваши результаты BY `возраст на момент смерти` .

См. решение

Далее: Работа с массивами

Введение в работу с массивами.

Функции даты и времени SQL Server с примерами

Автор: Joe Gavin   | Обновлено: 17 мая 2021 г.   | Комментарии (3)   | Связанный: Еще > Даты


Проблема

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

Решение

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

  • Функции повышенной точности
  • Функции меньшей точности
  • Функции частей даты и времени
  • Дата и время из функций деталей
  • Функции значений разницы даты и времени
  • Функции изменения значений даты и времени
  • Функции проверки значений даты и времени

SQL был протестирован на SQL Server 2016, и GETDATE() используется везде, где это возможно. как я думал, это сделало вещи проще. Примечание: большинство этих функций будут работать для версии ранее, чем SQL 2016, но некоторые могут и не работать.

Функции SQL Server SYSDATETIME, SYSDATETIMEOFFSET и SYSUTCDATETIME

Высокоточные функции даты и времени SQL Server имеют шкалу 7 и являются:

  • SYSDATETIME — возвращает дату и время машины SQL Server работает на
  • SYSDATETIMEOFFSET — возвращает дату и время машины SQL Сервер работает плюс смещение от UTC
  • SYSUTCDATETIME — возвращает дату и время машины SQL Server работает как UTC
 -- функции повышенной точности
ВЫБЕРИТЕ SYSDATETIME () КАК «Дата и время»; -- вернуть дату/время2(7)
ВЫБЕРИТЕ SYSDATETIMEOFFSET() AS 'DateAndTime+Offset'; -- смещение даты и времени (7)
ВЫБЕРИТЕ SYSUTCDATETIME() AS 'DateAndTimeInUtc'; -- возвращает дату/время2(7)
 

Синтаксис SQL Server T-SQL Функция даты Результат
ВЫБЕРИТЕ SYSDATETIME() КАК 'Дата и время'; -- вернуть дату/время2(7) Дата и время 2019-03-08 10:24:34. 4377944
ВЫБРАТЬ SYSDATETIMEOFFSET() AS 'DateAndTime+Offset'; -- смещение даты и времени (7) Дата и время + смещение 2019-03-08 10:24:34.4377944 -05:00
ВЫБРАТЬ SYSUTCDATETIME() AS 'DateAndTimeInUtc'; -- возвращает дата/время2(7) Датеандтимеинутк 2019-03-08 15:24:34.4377944

Функции SQL Server CURRENT_TIMESTAMP, GETDATE() и GETUTCDATE()

Функции данных и времени меньшей точности SQL Server имеют шкалу 3 и являются:

  • CURRENT_TIMESTAMP — возвращает дату и время машины SQL Server работает на
  • GETDATE() — возвращает дату и время машины, на которой работает SQL Server. на
  • GETUTCDATE() — возвращает дату и время машины, на которой находится SQL Server. работает как UTC
 -- функции меньшей точности -- возвращает дату и время
ВЫБЕРИТЕ CURRENT_TIMESTAMP AS 'DateAndTime'; -- примечание: без скобок
ВЫБЕРИТЕ GETDATE() AS 'DateAndTime';
ВЫБЕРИТЕ GETUTCDATE() AS 'DateAndTimeUtc';
 

Синтаксис SQL Server T-SQL Функция даты Результат
ВЫБЕРИТЕ CURRENT_TIMESTAMP AS 'DateAndTime'; -- примечание: без скобок Дата и время 2019-03-08 10:28:23. 643
ВЫБРАТЬ GETDATE() AS 'Дата и время'; Дата и время 2019-03-08 10:28:23.643
ВЫБРАТЬ GETUTCDATE() AS 'DateAndTimeUtc'; Датеандтимеутк 2019-03-08 15:28:23.643

Функция SQL Server DATENAME

  • DATENAME — возвращает строку, соответствующую указанной части даты. на указанную дату, как показано в следующей таблице
 -- части даты и времени - возвращает nvarchar
ВЫБЕРИТЕ DATENAME(YEAR, GETDATE()) AS 'Год';
SELECT DATENAME(QUARTER, GETDATE()) AS 'Квартал';
SELECT DATENAME(MONTH, GETDATE()) AS 'Название месяца';
SELECT DATENAME(DAYOFYEAR, GETDATE()) AS 'DayOfYear';
SELECT DATENAME(DAY, GETDATE()) AS 'Day';
SELECT DATENAME(WEEK, GETDATE()) AS 'Неделя';
SELECT DATENAME(WEEKDAY, GETDATE()) AS 'День недели';
SELECT DATENAME(HOUR, GETDATE()) AS 'Час';
SELECT DATENAME(MINUTE, GETDATE()) AS 'Minute';
SELECT DATENAME(SECOND, GETDATE()) AS 'Второй';
SELECT DATENAME(MILLISECOND, GETDATE()) AS 'MilliSecond';
SELECT DATENAME(MICROSECOND, GETDATE()) AS 'MicroSecond';
ВЫБЕРИТЕ DATENAME(НС, GETDATE()) AS 'Наносекунда';
ВЫБЕРИТЕ DATENAME(ISO_WEEK, GETDATE()) AS 'Неделя';
 

Синтаксис SQL Server T-SQL Функция даты Результат
ВЫБЕРИТЕ DATENAME(YEAR, GETDATE()) AS 'Год'; Год 2019
SELECT DATENAME(QUARTER, GETDATE()) AS 'Квартал'; Квартал 1
ВЫБРАТЬ ИМЯ ДАТЫ(МЕСЯЦ, ПОЛУЧИТЬДАТУ()) КАК 'Месяц'; Месяц марта
SELECT DATENAME(DAYOFYEAR, GETDATE()) AS 'DayOfYear'; День года 67
SELECT DATENAME(DAY, GETDATE()) AS 'Day'; День 8
SELECT DATENAME(WEEK, GETDATE()) AS 'Неделя'; Неделя 10
SELECT DATENAME(WEEKDAY, GETDATE()) AS 'WeekDay'; День недели Пятница
SELECT DATENAME(HOUR, GETDATE()) AS 'Час'; час 11
SELECT DATENAME(MINUTE, GETDATE()) AS 'Минуты'; Минута 25
ВЫБЕРИТЕ DATENAME(SECOND, GETDATE()) AS 'Второй'; Второй 44
ВЫБЕРИТЕ DATENAME(MILLISECOND, GETDATE()) AS 'MilliSecond'; Миллисекунда 426
SELECT DATENAME(MICROSECOND, GETDATE()) AS 'MicroSecond'; Микросекунда 426666
ВЫБЕРИТЕ DATENAME(НАНОСЕКУНД, GETDATE()) AS 'Наносекунда'; Наносекунда 426666666
ВЫБЕРИТЕ DATENAME(ISO_WEEK, GETDATE()) AS 'Неделя'; Неделя 10

Функция SQL Server DATEPART

  • DATEPART – возвращает целое число, соответствующее указанной части даты
 -- части даты и времени -- возвращает целое число
ВЫБЕРИТЕ DATEPART(YEAR, GETDATE()) AS 'Год';
SELECT DATEPART(QUARTER, GETDATE()) AS 'Квартал';
SELECT DATEPART(MONTH, GETDATE()) AS 'Месяц';
SELECT DATEPART(DAYOFYEAR, GETDATE()) AS 'DayOfYear';
SELECT DATEPART(DAY, GETDATE()) AS 'День';
SELECT DATEPART(WEEK, GETDATE()) AS 'Неделя';
SELECT DATEPART(WEEKDAY, GETDATE()) AS 'WeekDay';
SELECT DATEPART(HOUR, GETDATE()) AS 'Час';
SELECT DATEPART(MINUTE, GETDATE()) AS 'Минута';
SELECT DATEPART(SECOND, GETDATE()) AS 'Второй';
SELECT DATEPART(MILLISECOND, GETDATE()) AS 'MilliSecond';
SELECT DATEPART(MICROSECOND, GETDATE()) AS 'MicroSecond';
ВЫБЕРИТЕ DATEPART(НС, GETDATE()) AS 'Наносекунда';
SELECT DATEPART(ISO_WEEK, GETDATE()) AS 'Неделя';
 

Синтаксис SQL Server T-SQL Функция даты Результат
SELECT DATEPART(YEAR, GETDATE()) AS 'Год'; Год 2019
ВЫБРАТЬ ЧАСТЬ ДАТЫ (КВАРТАЛ, GETDATE()) КАК 'Квартал'; Квартал 1
ВЫБРАТЬ ЧАСТЬ ДАТЫ(МЕСЯЦ, ПОЛУЧИТЬДАТУ()) КАК 'Месяц'; Месяц 3
SELECT DATEPART(DAYOFYEAR, GETDATE()) AS 'DayOfYear'; День года 67
ВЫБРАТЬ ЧАСТЬ ДАТЫ(ДЕНЬ, ПОЛУЧИТЬДАТУ()) КАК 'День'; День 8
ВЫБРАТЬ ЧАСТЬ ДАТЫ(НЕДЕЛЯ, ПОЛУЧИТЬДАТУ()) КАК 'Неделя'; Неделя 10
ВЫБЕРИТЕ ЧАСТЬ ДАТЫ (ДЕНЬ НЕД, GETDATE()) КАК 'День недели'; День недели 6
ВЫБРАТЬ ЧАСТЬ ДАТЫ(ЧАС, ПОЛУЧИТЬДАТУ()) КАК 'Час'; час 10
ВЫБЕРИТЕ ЧАСТЬ ДАТЫ (МИНУТА, GETDATE()) КАК 'Минута'; Минута 36
ВЫБЕРИТЕ DATEPART(SECOND, GETDATE()) AS 'Второй'; Второй 14
ВЫБЕРИТЕ DATEPART(MILLISECOND, GETDATE()) AS 'MilliSecond'; Миллисекунда 43
ВЫБЕРИТЕ ЧАСТЬ ДАТЫ (МИКРОСЕКУНДЫ, GETDATE()) КАК 'Микросекунды'; Микросекунда 43333
ВЫБЕРИТЕ ЧАСТЬ ДАТЫ (НС, GETDATE()) AS 'Наносекунда'; Наносекунда 43333333
SELECT DATEPART(ISO_WEEK, GETDATE()) AS 'Неделя'; Неделя 10

SQL Server ДЕНЬ, МЕСЯЦ и ГОД Функции

  • ДЕНЬ – возвращает целое число, соответствующее указанному дню
  • МЕСЯЦ – возвращает целое число, соответствующее указанному месяцу.
  • ГОД– возвращает целое число, соответствующее указанному году
 ВЫБЕРИТЕ ДЕНЬ(GETDATE()) AS 'День';
ВЫБЕРИТЕ МЕСЯЦ (GETDATE()) AS 'Месяц';
SELECT YEAR(GETDATE()) AS 'Год';
 

Синтаксис SQL Server T-SQL Функция даты Результат
ВЫБЕРИТЕ ДЕНЬ(GETDATE()) AS 'День'; ДЕНЬ 8
ВЫБЕРИТЕ МЕСЯЦ (GETDATE()) AS 'Месяц'; МЕСЯЦ 3
ВЫБЕРИТЕ ГОД(GETDATE()) AS 'Год'; ГОД 2019

SQL Server DATEFROMPARTS, DATETIME2FROMPARTS, DATETIMEFROMPARTS, DATETIMEOFFSETFROMPARTS, SMALLDATETIMEFROMPARTS и TIMEFROMPARTS Функции

  • DATEFROMPARTS — возвращает дату из указанной даты
  • DATETIME2FROMPARTS — возвращает дату и время2 из указанной части
  • DATETIMEFROMPARTS — возвращает дату и время из указанной части
  • .
  • DATETIMEOFFSETFROMPARTS — возвращает смещение даты и времени из указанной части
  • SMALLDATETIMEFROMPARTS — возвращает малую дату и время из указанной части
  • TIMEFROMPARTS — возвращает время из указанной части
 -- дата и время из частей
ВЫБЕРИТЕ ДАТУ ОТ ЧАСТЕЙ (2019),1,1) КАК «Дата»; -- возвращает дату
ВЫБЕРИТЕ DATETIME2FROMPARTS(2019,1,1,6,0,0,0,1) AS 'DateTime2'; -- возвращает дату/время2
ВЫБЕРИТЕ DATETIMEFROMPARTS(2019,1,1,6,0,0,0) AS 'DateTime'; -- возвращает дату и время
ВЫБЕРИТЕ DATETIMEOFFSETFROMPARTS(2019,1,1,6,0,0,0,0,0,0) AS 'Смещение'; -- возвращает смещение даты и времени
ВЫБЕРИТЕ SMALLDATETIMEFROMPARTS(2019,1,1,6,0) AS 'SmallDateTime'; -- возвращает малую дату и время
ВЫБЕРИТЕ TIMEFROMPARTS(6,0,0,0,0) КАК «Время»; -- возвращает время
 

Синтаксис SQL Server T-SQL Функция даты Результат
ВЫБРАТЬ DATEFROMPARTS(2019,1,1) AS 'Дата'; Дата 01. 01.2019
ВЫБЕРИТЕ DATETIME2FROMPARTS(2019,1,1,6,0,0,0,1) AS 'DateTime2'; ДатаВремя2 01.01.2019 06:00:00.0
ВЫБЕРИТЕ DATETIMEFROMPARTS(2019,1,1,6,0,0,0) AS 'DateTime'; ДатаВремя 01.01.2019 06:00:00.000
ВЫБЕРИТЕ DATETIMEOFFSETFROMPARTS(2019,1,1,6,0,0,0,0,0,0) AS 'Смещение'; Смещение 01.01.2019 06:00:00 +00:00
ВЫБЕРИТЕ SMALLDATETIMEFROMPARTS(2019,1,1,6,0) AS 'SmallDateTime'; СмоллДатетиме 01.01.2019 06:00:00
ВЫБЕРИТЕ TIMEFROMPARTS(6,0,0,0,0) КАК «Время»; Время 06:00:00

Функции SQL Server DATEDIFF и DATEDIFF_BIG

  • DATEDIFF — возвращает количество пересеченных границ даты или времени между указанными датами как int
  • DATEDIFF_BIG — возвращает количество пересеченных границ даты или времени между указанными датами как bigint
 --Дата и разница во времени
SELECT DATEDIFF(DAY, 2019-31-01, 2019-01-01) AS 'DateDif' -- возвращает целое число
SELECT DATEDIFF_BIG(DAY, 2019-31-01, 2019-01-01) AS 'DateDifBig' -- возвращает bigint
 

Синтаксис SQL Server T-SQL Функция даты Результат
ВЫБЕРИТЕ DATEDIFF(DAY, 2019-31-01, 2019-01-01) AS 'DateDif' ДатаРазница 30
ВЫБЕРИТЕ DATEDIFF_BIG (ДЕНЬ, 01. 01.2019, 01.01.2019) КАК 'DateDifBig' DateDifBig 30

Функции SQL Server DATEADD, EOMONTH, SWITCHOFFSET и TODATETIMEOFFSET

  • DATEADD — возвращает часть даты с добавленным интервалом в виде даты и времени
  • КОНМЕСЯЦА — возвращает последний день месяца смещения как тип start_date
  • SWITCHOFFSET — возвращает смещение даты и времени, а также смещение часового пояса
  • TODATETIMEOFFSET — возвращает дату и время со смещением часового пояса
 -- изменить дату и время
ВЫБЕРИТЕ DATEADD(DAY,1,GETDATE()) AS 'DatePlus1'; -- возвращает тип данных аргумента даты
ВЫБЕРИТЕ КОНМЕСЯЦ (GETDATE(), 1) AS 'LastDayOfNextMonth'; -- возвращает аргумент start_date или дату
ВЫБЕРИТЕ SWITCHOFFSET(GETDATE(), -6) AS 'NowMinus6'; -- возвращает смещение даты и времени
SELECT TODATETIMEOFFSET(GETDATE(), -2) AS 'Смещение'; -- возвращает смещение даты и времени
 

Синтаксис SQL Server T-SQL Функция даты Результат
ВЫБЕРИТЕ DATEADD(DAY,1,GETDATE()) AS 'DatePlus1'; ДатаПлюс1 2019-03-09 10:38:21. 710
ВЫБЕРИТЕ КОНМЕСЯЦ(GETDATE(),1) AS 'LastDayOfNextMonth'; Ластдайофнекстмесяц 2019-04-30
ВЫБРАТЬ SWITCHOFFSET(GETDATE(), -6) AS 'NowMinus6'; СейчасМинус6 2019-03-08 12:40:22.540 -00:06
ВЫБРАТЬ TODATETIMEOFFSET(GETDATE(), -2) AS 'Смещение'; Смещение 2019-03-08 12:46:22.540 -00:02

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

  • ISDATE — возвращает int — возвращает 1, если допустимый тип даты и времени, и 0, если не
 -- проверить дату и время -- возвращает целое число
ВЫБРАТЬ ISDATE(GETDATE()) AS 'IsDate';
ВЫБЕРИТЕ ISDATE(NULL) AS 'IsDate';
 

Синтаксис SQL Server T-SQL Функция даты Результат
ВЫБРАТЬ ISDATE(GETDATE()) AS 'IsDate'; ИсДате 1
ВЫБРАТЬ ISDATE(NULL) AS 'IsDate'; ИсДате 0

Следующие шаги

Надеюсь, этот совет был вам полезен.

Поскольку это было написано в качестве краткого справочника, следующие ссылки содержат дополнительную информацию. относительно функций даты и времени и форматирования:

  • Советы по MSSQLTips
    • Преобразование даты и времени с помощью SQL Server
    • Советы по датам SQL Server
    • Примеры расчета даты и времени SQL Server
    • Новые функции даты и времени в SQL Server
    • Функции SQL Server отстают и опережают, чтобы помочь определить разницу в датах
    • Восстановление баз данных SQL Server с помощью функций DateTime
    • Рекомендации SQL Server DateTime
    • Форматирование дат SQL Server с помощью функции FORMAT
  • Прочие ресурсы
    • https://stackoverflow.com/questions/74385/how-to-convert-datetime-to-varchar
    • Поиск — функции даты и времени
    • https://stackoverflow.com/questions/113045/how-to-return-only-the-date-from-a-sql-server-datetime-datatype
    • https://www.