Функции даты и времени
Аргументы функций даты и времени имеют тип DATE. За исключением функции которая возвращает значение типа NUMBER, все функции возвращают значения типа DATE. В этом разделе рассматриваются также арифметические операции над датами. Функции даты и времени описываются в следующей таблице.
ADD_MONTHS(d, х)
Возвращает дату 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,
LAST_DAY(d)
Возвращает последний день месяца, содержащего d. Эту функцию можно применять для определения количества дней, оставшихся в текущем месяце.
LOCALTIMESTAMP
Возвращает текущую дату во временной зоне сеанса как значение типа TIMESTAMP. Если определен параметр
MONTHS_BETWEEN
Возвращает число месяцев между датой и датой date2. Если дни в date2 совпадают или если обе даты являются последними днями своих месяцев, то результат представляет собой целое число. В противном случае результат будет содержать дробную часть (в отношении к 31-дневному месяцу).
NEW_TIME
Возвращает дату и время часового пояса zone2 для даты и времени часового пояса
NEXT_DAY
Возвращает в string дату первого дня, наступающего после даты d. Строка string указывает день недели на языке текущего сеанса. Временной компонент возвращаемого значения тот же, что и временной компонент
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 возвращает дату
и время локальной базы данных.
Возвращает дату d, усеченную до единицы измерения, указанной с помощью format. Применяются те же форматы, что и в функции ROUND (см. таблицу 5.2). Если formaf опущен, принимается формат по умолчанию ‘DD’, который усекает d до ближайшего дня.
TZ_OFFSET
Возвращает в виде строки символов смещение между заданным часовым поясом timezone и UTC. Аргумент timezone можно определить либо как название часового пояса (см. таблицу 5.1 или представление v$timezone_names),
Арифметические операции с датами и временем
Выполнение арифметических операций над датами (d). датами и временем (dt), интервалами (г) и числами (га) описывается в таблице 5.3. Обратите внимание, что при вычитании одной даты из другой результатом является число.
Примеры использования арифметических операций с датами и временем можно найти в документации Oracle.
< Предыдущая | Следующая > |
---|
Функции для работы с датой и временем
Краткий обзор основных функций для работы с датой и временем представлен в таблице.
Таблица 11.3. | |
DATEADD | добавляет к дате указанное значение дней, месяцев, часов и т.д. |
DATEDIFF | возвращает разницу между указанными частями двух дат |
DATENAME | выделяет из даты указанную часть и возвращает ее в символьном формате |
DATEPART | выделяет из даты указанную часть и возвращает ее в числовом формате |
DAY | возвращает число из указанной даты |
GETDATE | возвращает текущее системное время |
проверяет правильность выражения на соответствие одному из возможных форматов ввода даты | |
MONTH | возвращает значение месяца из указанной даты |
YEAR | возвращает значение года из указанной даты |
SELECT Year(Дата) AS Год, Month(Дата)
AS Месяц,
Sum(Количество) AS Общ_Количество
FROM Сделка
GROUP BY Year(Дата), Month(Дата)
Пример 11.
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.