Sql даты функции: работа с форматами, интервалами и часовыми поясами

Содержание

текущая дата и другие функции даты в времени

Пример 1. Сформировать список актеров старше 70 лет. Пишем следующий запрос:

SELECT FName, LName, BirthDate FROM ACTOR WHERE TIMESTAMPDIFF(YEAR, BirthDate, CURDATE()) > 70

В этом запросе вычисляется разница между текущей датой CURDATE() и датой рождения актёра BirthDate, содержащейся в таблице ACTOR. Для вычисления разницы применена функция TIMESTAMPDIFF(). Ключевое слово YEAR — задаёт единицу измерения — в годах интервала между датами. Вычисленное значение и результат его сравнения с числом 70 вполне пригодны в качестве условия выборки в секции WHERE. Следует учесть, что функция TIMESTAMPDIFF() существует лишь в MySQL. В других диалектах SQL для этого есть функция DATEDIFF, а для задания единицы измерения применяются различные ключевые слова в различных вариантах написания.

Для вычисления разницы дат можно использовать и оператор «минус». Это сделано в следующем примере.

Пример 2. Вывести список актеров, которые не задействованы в новых постановках (в постановках последних 3 лет). Использовать CURDATE(), NOT IN. Запрос будет следующим:

SELECT fname, lname FROM actor WHERE actor_id NOT IN(SELECT actor_id FROM team WHERE play_id IN(SELECT play_id FROM play WHERE YEAR(premieredate) — YEAR(CURDATE())

В этом запросе задействована функция YEAR(). Аргументами её являются дата премьеры постановки premieredate из таблицы play и текущая дата. Для вычисления разницы использован оператор «минус». Он имеет больший приоритет по сравнению с оператором сравнения и поэтому выполняется первым. Вычисленнное выражение сравнивается с числом 3 и подходящие значения служат условием выборки из таблицы play, содержащей данные о постановках. Этот подзапрос — самый глубокий в «матрёшке» целого запроса. Подзапрос более высокого уровня из таблицы team, содержащей данные о ролях, выбирает идентификаторы актёров, с помощью предиката IN. Выбираются те актёры, которые участвовали в постановках трёх послежних лет. И, наконец, самый внешний запрос к таблице actor выбирает значения с отрицанием (NOT IN) значения предыдущего подзапроса.

Далее — пример использования соединения таблиц, среди которых из одной выбирается дата для вычисления разницы с текущей датой.

Пример 3. Сформировать список актеров с их стажем (в днях). Использовать CURDATE(), GROUP BY. Запрос будет следующим:

SELECT DISTINCT a.Actor_ID, a.FName, a.LName, CURDATE() — p1.PremiereDate AS ExpDays FROM Play p1 JOIN Team t1 ON p1.play_id = t1.play_id JOIN Actor a ON t1.actor_id = a.Actor_id WHERE t1.ACTOR_ID = a.Actor_ID ORDER BY ExpDays, a.Actor_ID DESC

В этом запросе разница между текущей датой CURDATE() и датой премьеры постановки PremiereDate из таблицы Play вычисляется как имя столбца в результирующей таблице. Поскольку эти даты имеют один и тот же формат, для вычисления разницы достаточно использовать оператор «минус». Разница вычислена. Но из таблицы Play невозможно напрямую «достучаться» до таблицы Actor, содержащей данные об актёрах. Поэтому используем соединение (JOIN) этой таблицы с таблицей Team, которая уже связана с таблицей Actor при помощи ключа Actor_ID. Соединение таблиц Team и Actor — второе в этой цепочке из трёх таблиц.

Составить SQL запросы с текущей датой самостоятельно, а затем посмотреть решения

CURDATE(), CURRENT_DATE(), CURRENT_DATE — возвращают текущую дату в формате ‘YYYY-MM-DD’ или YYYYDDMM в зависимости от того, вызывается функция в текстовом или числовом контексте.

CURTIME(), CURRENT_TIME(), CURRENT_TIME — возвращают текущее время суток в формате ‘hh-mm-ss’ или hhmmss в зависимости от того, вызывается функция в текстовом или числовом контексте.

NOW() — возвращает текущие дату и время формате ‘YYYY-MM-DD hh:mm:ss’ или YYYYDDMMhhmmss в зависимости от того, вызывается функция в текстовом или числовом контексте.

TIMEDIFF(param1, param2) — возвращает разницу между значениями времени, заданными параметрами param1 и param2.

DATEDIFF(param1, param2) — возвращает разницу между датами param1 и param2. Значения param1 и param2 могут иметь типы DATE или DATETIME, а при вычислении разницы используется лишь часть DATE.

PERIOD_DIFF(param1, param2) — возвращает разницу в месяцах между датами param1 и param2. Значения param1 и param2 могут быть представлены в числовом формате YYYYMM или YYMM.

TIMESTAMPDIFF(interval, param1, param2) — возвращает разницу между значениями датами param1 и param2. Значения param1 и param2 могут быть представлены в форматах ‘YYYY-MM-DD’ или ‘YYYY-MM-DD hh:mm:ss’. Единица измерения разницы задаётся параметром interval. Он может принимать значения FRAC_SECOND (микросекунды), SECOND (секунды), MINUTE (минуты), HOUR (часы), DAY (дни), WEEK (недели), MONTH (месяцы), QUARTER (кварталы), YEAR (годы).

ADDDATE(date, INTERVAL value) — возвращает дату, к которой прибавлено значение value. Ключевое слово INTERVAL обязательно следует в запросе, после него указывается значение value, а затем единицы измерения прибавляемого значения. Ими могут быть SECOND (секунды), MINUTE (минуты), HOUR (часы), MINUTE_SECOND (минуты и секунды), HOUR_MINUTE (часы и минуты), DAY_SECOND (дни, часы минуты и секунды), DAY_MINUTE (дни, часы и минуты), DAY_HOUR (дни и часы), YEAR_MONTH (годы и месяцы).

SUBDATE(date, INTERVAL value) — вычитает из величины даты date произвольный временной интервал и возвращает результат. Ключевое слово INTERVAL обязательно следует в запросе, после него указывается значение value, а затем единицы измерения вычитаемого значения. Возможные единицы измерения — те же, что и для функции ADDDATE().

SUBTIME(datetime, time) — вычитает из величины времени datetime вида ‘YYYY-MM-DD hh:mm:ss’ произвольно заданное значение времени time и возвращает результат.

PERIOD_ADD(period, N) — добавляет N месяцев к значению даты period. Значение period должно быть представлено в числовом формате ‘YYYYMM’ или ‘YYMM’.

TIMESTAMPADD(interval, param1, param2) — прибавляет к дате и времени суток param2 в полном или кратком формате временной интервал param1, единицы измерения которого заданы параметром interval. Возможные единицы измерения — те же, что и для функции TIMESTAMPDIFF().

DATE(datetime) — извлекает из значения даты и времени суток в формате DATETIME (‘YYYY-MM-DD hh:mm:ss’) только дату, отсекая часы, минуты и секунды.

TIME(datetime) — извлекает из значения даты и времени суток в формате DATETIME (‘YYYY-MM-DD hh:mm:ss’) только время суток, отсекая дату.

TIMESTAMP(param) — принимает в качестве аргумента дату и время суток в полном или кратком формате и возвращает полный вариант в формате DATETIME (‘YYYY-MM-DD hh:mm:ss’).

DAY(date), DAYOFMONTH(date) — принимают в качестве аргумента дату, и возвращают порядковый номер дня в месяце (от 1 до 31).

DAYNAME(date) — принимает в качестве аргумента дату, и возвращает день недели в виде полного слова на английском языке.

DAYOFWEEK(date) — принимает в качестве аргумента дату, и возвращает порядкоый номер дня недели от 1 (воскресенье) до 7 (суббота).

WEEKDAY(date) — принимает в качестве аргумента дату, и возвращает порядкоый номер дня недели от 0 (понедельник) до 6 (воскресенье).

WEEK(date) — принимает в качестве аргумента дату, и возвращает номер недели в году для этой даты от 0 до 53.

WEEKOFYEAR(datetime) — возвращает порядковый номер недели в году для даты datetime от 1 до 53.

MONTH(datetime) — возвращает числовое значение месяца года от 1 до 12 для даты datetime.

MONTHNAME(datetime) — возвращает строку с названием месяца для даты datetime.

QUARTER(datetime) — возвращает значение квартала от 1 до 4 для даты datetime, которая может быть передана в формате ‘YYYY-MM-DD’ или ‘YYYY-MM-DD hh:mm:ss’.

YEAR(datetime)

— возвращает год от 1000 до 9999 для даты datetime.

DAYOFYEAR(date) — возвращает порядковый номер дня в году от 1 до 366 для даты date.

HOUR(datetime) — возвращает значение часа от 0 до 23 для времени datetime.

MINUTE(datetime) — возвращает значение минут от 0 до 59 для времени datetime.

SECOND(time) — возвращает количество секунд для времени суток time, которое задаётся либо в виде строки ‘hh:mm:ss’, либо числа hhmmss.

EXTRACT(type FROM datetime) — принимает дату и время суток datetime и возвращает часть, определяемую параметром type. Значениями параметра могут быть YEAR, MONTH, DAY, HOUR, MINUTE, SECOND.

TO_DAYS(date) — принимает дату date в кратком ‘YYYY-MM-DD’ или полном формате ‘YYYY-MM-DD hh:mm:ss’ и возвращает количество дней, прошедших с нулевого года.

FROM_DAYS(N) — принимает количество дней N, прошедших с нулевого года, и возвращает дату в формате ‘YYYY-MM-DD’.

UNIX_TIMESTAMP(), UNIX_TIMESTAMP(datetime) — если параметр не указан, то возвращает количество секунд, прошедших с 00:00 1 января 1970 года. Если параметр datetime указан (в кратком ‘YYYY-MM-DD’ или полном формате ‘YYYY-MM-DD hh:mm:ss’), то возвращает разницу в секундах между 00:00 1 января 1970 года и датой datetime.

FROM_UNIXTIME(unix_timestamp), FROM_UNIXTIME(unix_timestamp, format) — принимает количество секунд, прошедших с 00:00 1 января 1970 года и возвращает дату и время суток в виде строки ‘YYYY-MM-DD hh:mm:ss’ или в виде числа YYYYDDMMhhmmss в зависимости от того, вызвана функция в строковом или числовом контексте.

TIME_TO_SEC(time) — принимает время суток time в формате ‘hh:mm:ss’ и возвращает количество секунд, прошедших с начала суток.

SEC_TO_TIME(seconds) — принимает количество секунд seconds, прошедших с начала суток и возвращает время в формате ‘hh:mm:ss’ или hhmmss в зависимости от того, вызвана функция в строковом или числовом контексте.

MAKEDATE(year, dayofyear) — принимает год year, номер дня в году dayofyear и возвращает дату в формате ‘YYYY-MM-DD’.

MAKETIME(hour, minute, second) — принимает часы hour, минуты minute и секунды second и возвращает время суток в формате ‘hh:mm:ss’.

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

Реляционные базы данных и язык SQL

SQL Работа с датами



SQL DATE

Самое сложное при работе с датами — это убедиться, что формат даты, которую вы пытаетесь вставить, совпадает с форматом столбца даты в базе данных.

Пока ваши данные содержат только часть даты, ваши запросы будут работать так, как и ожидалось. Однако, если задействована временная часть, все становится еще сложнее.


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

MySQL поставляется со следующими типами данных для хранения даты или значения даты/времени в базе данных:

  • DATE — формат YYYY-MM-DD
  • DATETIME — формат: YYYY-MM-DD HH:MI:SS
  • TIMESTAMP — формат: YYYY-MM-DD HH:MI:SS
  • YEAR — формат YYYY или YY

SQL Server поставляется со следующими типами данных для хранения даты или значения даты/времени в базе данных:

  • DATE — формат YYYY-MM-DD
  • DATETIME — формат: YYYY-MM-DD HH:MI:SS
  • SMALLDATETIME — формат: YYYY-MM-DD HH:MI:SS
  • TIMESTAMP — формат: уникальное число

Примечание: Типы дат выбираются для столбца при создании новой таблицы в базе данных!


SQL Работа с датами

Вы можете легко сравнить две даты, если нет никакого компонента времени!

Предположим, что у нас есть следующая таблица «Orders»:

OrderId ProductName OrderDate
1 Geitost 2008-11-11
2 Camembert Pierrot 2008-11-09
3 Mozzarella di Giovanni 2008-11-11
4 Mascarpone Fabioli 2008-10-29

Теперь мы хотим выбрать записи с порядковым номером «2008-11-11» из приведенной выше таблицы.

Мы используем следующую инструкцию SELECT:

SELECT * FROM Orders WHERE OrderDate=’2008-11-11′

Результирующий набор будет выглядеть следующим образом:

OrderId ProductName OrderDate
1 Geitost 2008-11-11
3 Mozzarella di Giovanni 2008-11-11

Теперь предположим, что таблица «Orders» выглядит следующим образом (обратите внимание на компонент time в столбце «OrderDate»):

OrderId ProductName OrderDate
1 Geitost 2008-11-11 13:23:44
2 Camembert Pierrot 2008-11-09 15:45:21
3 Mozzarella di Giovanni 2008-11-11 11:12:01
4 Mascarpone Fabioli 2008-10-29 14:56:59

Если мы используем тот же оператор SELECT, что и выше:

SELECT * FROM Orders WHERE OrderDate=’2008-11-11′

Мы не получим никакого результата! Это происходит потому, что запрос ищет только даты без временной части.

Совет: Чтобы ваши запросы были простыми и удобными в обслуживании, не допускайте компонентов времени в ваших датах!


SQL — Функция даты | ИТ Блог. Администрирование серверов на основе Linux (Ubuntu, Debian, CentOS, openSUSE)

Sr.No. Описание функции
1 ADDDATE() – Добавление даты
2 ADDTIME() – Добавляет время
3 CONVERT_TZ() – Преобразование из одного часового пояса в другой
4 CURDATE() – Возвращает текущую дату
5 CURRENT_DATE(), CURRENT_DATE – Синонимы для CURDATE()
6 CURRENT_TIME(), CURRENT_TIME – Синонимы для CURTIME()
7 CURRENT_TIMESTAMP(), CURRENT_TIMESTAMP – Синоним NOW()
8 CURTIME() – Возвращает текущее время
9 DATE_ADD() – Добавляет две даты
10 DATE_FORMAT() – Формат даты, как указано
11 DATE_SUB() – Вычитание двух дат
12 DATE() – Извлекает часть выражения даты или даты и времени
13 DATEDIFF() – Вычитание двух дат
14 DAY() – Синоним DAYOFMONTH()
15 DAYNAME() – Возвращает имя дня недели
16 DAYOFMONTH() – Возвращает день месяца (1-31)
17 DAYOFWEEK() – Возвращает индекс недели
18 DAYOFYEAR() – Возвращает день года (1-366)
19 EXTRACT() – Извлекает часть даты
20 FROM_DAYS() – Преобразует номер дня до даты
21 FROM_UNIXTIME() – Формат даты, как метка времени UNIX
22 HOUR() – Извлекает час
23 LAST_DAY() – Возвращает последний день месяца
24 LOCALTIME()  – Местное время, синоним NOW()
25 LOCALTIMESTAMP() – Синоним NOW()
26 MAKEDATE() – Создает дату в год и день из года
27 MAKETIME()
28 MICROSECOND() – Возвращает микросекунды от аргумента
29 MINUTE() – Возвращает минуту от аргумента
30 MONTH() – Возвращает месяц
31 MONTHNAME() – Возвращает название месяца
32 NOW() – Возвращает текущую дату и время
33 PERIOD_ADD() – Добавляет период в год-месяц
34 PERIOD_DIFF() – Возвращает количество месяцев между периодами
35 QUARTER() – Возвращает четверть от даты
36 SEC_TO_TIME() – Преобразование секунд в формат ‘HH: MM: SS’
37 SECOND() – Возвращает секунды (0-59)
38 STR_TO_DATE() – Преобразует строку в дату
39 SUBDATE() – Когда вызывается с тремя аргументами является синонимом DATE_SUB()
40 SUBTIME() – Вычитание время
41 SYSDATE() – Возвращает время, при котором функция выполняет
42 TIME_FORMAT() – Формат времени
43 TIME_TO_SEC() – Возвращаемый аргумент преобразуется в секунды
44 TIME() – Извлекает время
45 TIMEDIFF() – Отнимает время
46 TIMESTAMP() – С одним аргументом функция возвращает выражение DATE или DateTime. С двумя аргументами, сумма аргументов
47 TIMESTAMPADD() – Добавляет интервал выражения даты и времени
48 TIMESTAMPDIFF() – Вычитание интервала из выражения даты и времени
49 TO_DAYS() – Возвращаемый аргумент даты конвертируются в дни
50 UNIX_TIMESTAMP() – Возвращает метку времени UNIX
51 UTC_DATE() – Возвращает текущую дату UTC
52 UTC_TIME() – Возвращает текущее время UTC
53 UTC_TIMESTAMP() – Возвращает текущую дату и время UTC
54 WEEK() – Возвращает номер недели
55 WEEKDAY() – Возвращает индекс дня недели
56 WEEKOFYEAR() – Возвращает календарную неделю на дату (1-53)
57 YEAR() – Возвращает год
58 YEARWEEK() – Возвращает год и неделю

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


SQL Даты

Самой трудной частью при работе с датами, чтобы быть уверенным, что формат даты вы пытаетесь вставить, соответствует формату столбца даты в базе данных.


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

В следующей таблице перечислены наиболее важные встроенные функции даты в MySQL:

функция Описание
NOW() Возвращает текущую дату и время
CURDATE() Возвращает текущую дату
CURTIME() Возвращает текущее время
DATE() Извлечение даты часть даты или выражения даты / времени
EXTRACT() Возвращает одну часть даты / времени
DATE_ADD() Добавляет заданный интервал времени до даты
DATE_SUB() Вычитает заданный интервал времени от даты
DATEDIFF() Возвращает количество дней между двумя датами
DATE_FORMAT() дата Отображение / времени данные в различных форматах

SQL Дата сервера Функции

В следующей таблице перечислены наиболее важные встроенные функции даты в SQL Server:

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

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

MySQL поставляется со следующими типами данных для хранения даты или даты / значение времени в базе данных:

  • ДАТА — формат YYYY-MM-DD
  • DATETIME — формат: YYYY-MM-DD HH: MI: SS
  • TIMESTAMP — формат: YYYY-MM-DD HH: MI: SS
  • ГОД — формат YYYY или YY

SQL Server поставляется со следующими типами данных для хранения даты или даты / значение времени в базе данных:

  • ДАТА — формат YYYY-MM-DD
  • DATETIME — формат: YYYY-MM-DD HH: MI: SS
  • SMALLDATETIME — формат: YYYY-MM-DD HH: MI: SS
  • TIMESTAMP — формат: уникальный номер

Note: Типы даты выбраны для столбца при создании новой таблицы в базе данных!

Для обзора всех типов данных , доступных, перейдите к нашей полной Справочник по типам данных .


SQL Работа с датами

Вы можете сравнить две даты легко, если нет времени компонент участвует!

Предположим , мы имеем следующую «Orders» таблица:

OrderId ProductName OrderDate
1 Geitost 2008-11-11
2 Camembert Pierrot 2008-11-09
3 Mozzarella di Giovanni 2008-11-11
4 Mascarpone Fabioli 2008-10-29

Теперь мы хотим , чтобы выбрать записи с OrderDate из «2008-11-11» из приведенной выше таблицы.

Мы используем следующую ЗЕЬЕСТ:

SELECT * FROM Orders WHERE OrderDate=’2008-11-11′

Результат-набор будет выглядеть следующим образом:

OrderId ProductName OrderDate
1 Geitost 2008-11-11

Дата / время функции MySQL — Oracle PL/SQL •MySQL •MariaDB •SQL Server •SQLite

Функция & Описание
ADDDATE
MySQL функция ADDDATE возвращает дату, после которой добавлен определенный интервал дата/время.
ADDTIME
MySQL функция ADDTIME возвращает значение дата/время и времени, к которому был добавлен временной интервал.
CURDATE
MySQL функция CURDATE возвращает текущую дату.
CURRENT_DATE
MySQL функция CURRENT_DATE возвращает текущую дату.
CURRENT_TIME
MySQL функция CURRENT_TIME возвращает текущее время.
CURRENT_TIMESTAMP
MySQL функция CURRENT_TIMESTAMP возвращает текущую дату и время.
CURTIME
MySQL функция CURTIME возвращает текущее время.
DATE
MySQL функция DATE возвращает значение даты из даты/времени.
DATE_ADD
MySQL функция DATE_ADD возвращает дату, после которой был добавлен определенный интервал даты/времени.
DATE_FORMAT
MySQL функция DATE_FORMAT форматирует дату по заданной маске.
DATE_SUB
MySQL функция DATE_SUB возвращает дату, после которой вычитается определенный интервал даты/времени.
DATEDIFF
MySQL функция DATEDIFF возвращает разность дней между двумя значениями даты.
DAY
MySQL функция DAY возвращает номер дня месяца из даты.
DAYNAME
MySQL функция DAYNAME возвращает название дня недели (англ.) из даты.
DAYOFMONTH
MySQL функция DAYOFMONTH возвращает номер дня месяца из даты.
DAYOFWEEK
MySQL функция DAYOFWEEK возвращает номер дня недели для значения даты. Необходимо помнить, что в западных странах неделя начинается с воскресения, суббота соответственно последний день недели.
DAYOFYEAR
MySQL функция DAYOFYEAR возвращает день года из определенной даты.
EXTRACT
MySQL функция EXTRACT извлекает детали из даты.
FROM_DAYS
MySQL функция FROM_DAYS принимает числовое значение дня по которому возвращает значение даты.
HOUR
MySQL функция HOUR возвращает часы из значения даты.
LAST_DAY
MySQL функция LAST_DAY возвращает последний день месяца для определенной даты.
LOCALTIME
MySQL функция LOCALTIME возвращает текущую дату и время.
LOCALTIMESTAMP
MySQL функция LOCALTIMESTAMP возвращает текущую дату и время.
MAKEDATE
MySQL функция MAKEDATE возвращает дату для определенного значения года и дня года.
MAKETIME
MySQL функция MAKETIME возвращает время для определенной комбинации часов, минут и секунд.
MICROSECOND
MySQL функция MICROSECOND возвращает микросекундную часть значения даты.
MINUTE
MySQL функция MINUTE возвращает минуты из значения даты.
MONTH
MySQL функция MONTH возвращает числовое значение месяца из даты.
MONTHNAME
MySQL функция MONTHNAME возвращает полное название месяца (англ.) из даты.
NOW
MySQL функция NOW возвращает текущую дату и время.
PERIOD_ADD
MySQL функция PERIOD_ADD принимает период (отформатированный как YYMM или YYYYMM) и добавляет к нему определенное количество месяцев.
PERIOD_DIFF
MySQL функция PERIOD_DIFF возвращает разность в месяцах между двумя периодами (отформатированная как YYMM или YYYYMM).
QUARTER
MySQL функция QUARTER возвращает числовое значение квартала год из даты.
SEC_TO_TIME
MySQL функция SEC_TO_TIME преобразует секунды в значение времени.
SECOND
MySQL функция SECOND возвращает количество секунд из значения даты.
STR_TO_DATE
MySQL функция STR_TO_DATE преобразует строку в дату, определенного формата.
SUBDATE
MySQL функция SUBDATE возвращает дату, после которой вычитается определенный интервал.
SUBTIME
MySQL функция SUBTIME возвращает значение даты/времени и времени, после которого вычитается определенный интервал времени.
SYSDATE
MySQL функция SYSDATE возвращает текущую дату и время.
TIME
MySQL функция TIME извлекает значение времени из выражения дата/время и время.
TIME_FORMAT
MySQL функция TIME_FORMAT форматирует время, указанное маской формата.
TIME_TO_SEC
MySQL функция TIME_TO_SEC преобразует значение времени в количество секунд.
TIMEDIFF
MySQL функция TIMEDIFF возвращает разность между двумя значениями даты / времени.
TIMESTAMP
MySQL функция TIMESTAMP преобразует выражение в значение даты и времени, и если задано, добавляется необязательный временной интервал для этого значения.
TO_DAYS
MySQL функция TO_DAYS преобразует дату в количество дней от нулевого года.
WEEK
MySQL функция WEEK возвращает неделю года для значения даты.
WEEKDAY
MySQL функция WEEKDAY возвращает индекс дня недели.
WEEKOFYEAR
MySQL функция MySQL WEEKOFYEAR возвращает номер недели года для значения даты.
YEAR
MySQL функция YEAR возвращает год из значения даты.
YEARWEEK
MySQL функция YEARWEEK возвращает год и неделю для значения даты.

Функция CURRENT_DATE — текущая дата

Функция CURRENT_DATE возвращает текущую дату в формате год-месяц-день.

См. также функцию NOW, которая возвращает текущий момент времени в формате год-месяц-день часы:минуты:секунды.

См. также функцию CURRENT_TIME, возвращает текущее время в формате часы:минуты:секунды.

Синтаксис

При выборке:

SELECT FROM имя_таблицы WHERE date = CURRENT_DATE()

При вставке:

INSERT INTO имя_таблицы SET date = CURRENT_DATE()

Примеры

Все примеры будут по этой таблице workers, если не сказано иное:

id
айди
name
имя
date
какая-то дата
1 Дима 2010-03-01
2 Петя 2011-04-02
3 Вася 2045-05-03
4 Коля 2046-06-04

Пример

В данном примере выбираются все работники, у которых дата больше текущей:

SELECT * FROM workers WHERE date > CURRENT_DATE()

SQL запрос выберет следующие строки:

id
айди
name
имя
date
какая-то дата
3 Вася 2045-05-03
4 Коля 2046-06-04

Пример

В данном примере выбираются все работники, у которых дата меньше текущей:

SELECT * FROM workers WHERE date 

SQL запрос выберет следующие строки:

id
айди
name
имя
date
какая-то дата
1 Дима 2010-03-01
2 Петя 2011-04-02

Пример

В данном примере в базу добавляется работник, при этом в поле date записывается текущая дата с помощью CURRENT_DATE:

INSERT INTO workers SET name='Иван', date=CURRENT_DATE()

SQL запрос выберет следующие строки:

id
айди
name
имя
date
какая-то дата
1 Дима 2010-03-01
2 Петя 2011-04-02
3 Вася 2045-05-03
4 Коля 2046-06-04
5 Иван 2020-09-28

Функция DATE_FORMAT — преобразование форматов даты

Функция DATE_FORMAT преобразует дату из формата год-месяц-день или формата год-месяц-день часы:минуты:секунды в другой удобный нам формат.

К примеру, из год-месяц-день можно сделать день.месяц.год или месяц—год

См. также функцию TIME_FORMAT, которая меняет формат вывода времени.

Можно использовать следующие команды, чтобы сделать нужный формат вывода:

Все примеры будут по этой таблице workers, если не сказано иное:

В данном примере при выборке создается новое поле, в котором будет лежать дата в другом формате:

SELECT *, DATE_FORMAT(date, '%d.%m.%Y') as new_date FROM workers

SQL запрос выберет следующие строки:

Команда Описание
%d День месяца, число от 00 до 31.
%e День месяца, число от 0 до 31.
%m Месяц, число от 01 до 12.
%c Месяц, число от 1 до 12.
%Y Год, число, 4 цифры.
%y Год, число, 2 цифры.
%j День года, число от 001 до 366.
%H Час, число от 00 до 23.
%k Час, число от 0 до 23.
%h Час, число от 01 до 12.
%I Час, число от 01 до 12.
%l Час, число от 1 до 12.
%i Минуты, число от 00 до 59.
%S Секунды, число от 00 до 59.
%s Секунды, число от 00 до 59.
%w День недели (0 — воскресенье, 1 — понедельник).
%W Название дня недели по-английски.
%a Сокращенный день недели по-английски.
%M Название месяца по-английски.
%b Сокращенный месяц по-английски.
%D День месяца с английским суффиксом (1st, 2nd, 3rd и т.д.).
%r Время, 12-часовой формат (hh:mm:ss [AP]M).
%T Время, 24-часовой формат (hh:mm:ss).
%p AM или PM.
%U Неделя, где воскресенье считается первым днем недели, число от 00 до 53.
%u Неделя, где понедельник считается первым днем недели, число от 00 до 53.
%V Неделя, где воскресенье считается первым днем недели, число от 01 до 53.
Используется с `%X’.
%v Неделя, где понедельник считается первым днем недели, число от 01 до 53.
Используется с `%x’.
%X Год для недели, где воскресенье считается первым днем недели, число, 4 цифры.
Используется с ‘%V’.
%x Год для недели, где воскресенье считается первым днем недели, число, 4 разряда.
Используется с ‘%v’.
%% Символ `%’.
id
айди
name
имя
date
дата регистрации
new_date
дата в новом формате
1 Дима 2010-03-01 12:01:02 01.03.2010
2 Петя 2011-04-02 13:02:03 02.04.2011
3 Вася 2012-05-03 14:03:04 03.05.2012

Обзор функций даты SQL Server

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

Возвращает текущую дату и время

Функция Описание
CURRENT_TIMESTAMP Возвращает текущую системную дату и время без части часового пояса.
GETUTCDATE Возвращает часть даты в виде целого числа.
GETDATE Возвращает текущую системную дату и время операционной системы, в которой работает SQL Server.
SYSDATETIME Возвращает текущую системную дату и время с большей точностью до долей секунды, чем функция GETDATE ().
SYSUTCDATETIME Возвращает текущую системную дату и время в формате UTC.
SYSDATETIMEOFFSET Возвращает текущую системную дату и время с указанием часового пояса.

Возвращение даты и времени Части

Функция Описание
DATENAME Возвращает часть даты в виде символьной строки
DATEPART Возвращает дату часть даты в виде целого числа
DAY Возвращает день указанной даты в виде целого числа
MONTH Возвращает месяц указанной даты в виде целого числа
YEAR Возвращает год даты как целое число.

Возврат разницы между двумя датами

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

Изменение дат

Создание даты и времени из их частей

Проверка значений даты и времени

Функция Описание
ISDATE Проверить, является ли значение действительной датой, время или значение datetime
.Функции даты

в SQL Server и MySQL


Даты SQL

Самая трудная часть при работе с датами — убедиться, что формат даты, которую вы пытаетесь вставить, соответствует формату столбца даты в базе данных.

Пока ваши данные содержат только часть даты, ваши запросы будут работать должным образом. Однако, если задействована временная часть, она становится сложнее.


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

MySQL поставляется со следующими типами данных для хранения даты или значения даты / времени в базе данных:

  • ДАТА — формат ГГГГ-ММ-ДД
  • DATETIME — формат: YYYY-MM-DD HH: MI: SS
  • TIMESTAMP — формат: ГГГГ-ММ-ДД ЧЧ: MI: SS
  • ГОД — формат ГГГГ или ГГ

SQL Server поставляется со следующими типами данных для хранения даты или значения даты / времени в базе данных:

  • ДАТА — формат ГГГГ-ММ-ДД
  • DATETIME — формат: ГГГГ-ММ-ДД ЧЧ: MI: SS
  • SMALLDATETIME — формат: ГГГГ-ММ-ДД ЧЧ: MI: SS
  • TIMESTAMP — формат: уникальный номер

Примечание: Типы дат выбираются для столбца при создании новой таблицы в базе данных!


SQL Работа с датами

Вы можете легко сравнить две даты, если в них нет временной составляющей!

Предположим, у нас есть следующая таблица «Заказы»:

OrderId Название продукта Дата заказа
1 Geitost 11-11-2008
2 Камамбер Пьеро 2008-11-09
3 Моцарелла ди Джованни 11-11-2008
4 Маскарпоне Фабиоли 29.10.2008

Теперь мы хотим выбрать записи с OrderDate «2008-11-11» из приведенной выше таблицы.

Мы используем следующий оператор SELECT:

ВЫБЕРИТЕ * ИЗ заказов, ГДЕ OrderDate = ‘2008-11-11’

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

OrderId Название продукта Дата заказа
1 Geitost 11-11-2008
3 Моцарелла ди Джованни 11-11-2008

Теперь предположим, что таблица «Заказы» выглядит следующим образом (обратите внимание на компонент времени в столбце «Дата заказа»):

OrderId Название продукта Дата заказа
1 Geitost 11-11-2008 13:23:44
2 Камамбер Пьеро 2008-11-09 15:45:21
3 Моцарелла ди Джованни 11-11-2008, 11:12:01
4 Маскарпоне Фабиоли 2008-10-29 14:56:59

Если мы используем тот же оператор SELECT, что и выше:

ВЫБЕРИТЕ * ИЗ заказов, ГДЕ OrderDate = ‘2008-11-11’

мы не получим результата! Это связано с тем, что запрос ищет только даты без временной части.

Совет: Чтобы ваши запросы были простыми и удобными в обслуживании, не допускайте компонентов времени в ваших датах!



.Обзор формата даты

SQL; Функция DateDiff SQL, функция DateAdd SQL и многое другое

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

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

Во-первых, давайте взглянем на некоторые популярные функции формата даты и времени SQL.

По умолчанию SQL Server поддерживает языки, поддерживаемые операционной системой Windows.В зависимости от языкового стандарта и параметров сортировки при установке SQL Server формат даты SQL может отличаться. Тип данных, которые вы собираетесь воспроизводить, определяется на основе настроек локали и настроек сортировки SQL Server.

В SQL Server тип данных DATE имеет два формата нейтрального языка по умолчанию.

  1. «ГГГГММДД»

    В следующем примере запрашивается таблица HumanResource.Employee , чтобы увидеть формат даты SQL для значений HireDate.

    ЕГЭ AdventureWorks2014;

    GO

    ВЫБЕРИТЕ HireDate, BusinessEntityID, LoginID, JobTitle

    FROM HumanResources.Сотрудник;

    ГО

    Теперь запросите столбец HireDate , используя формат нейтрального языка. В запросе мы передаем целочисленное значение, состоящее из года, 2008; месяц, 12 и 7 день.

    ВЫБЕРИТЕ HireDate, BusinessEntityID, LoginID, JobTitle

    FROM HumanResources.Employee

    WHERE HireDate = ‘20081207’;

    Примечание. В основном это означает, что входное значение является числовым; механизм SQL внутренне преобразует его и фактически выдает символьное значение.Итак, он заключен в одинарные кавычки

  2. ‘MM-DD-YYYY’ (формат на основе США)

    В этом формате даты SQL в столбец HireDate вводятся значения «ММ-ДД-ГГГГ». Это не целочисленный формат. Давайте запустим тот же запрос с новым форматом даты SQL для ввода значения «12 -07-2008» в столбец HireDate. Итак, давайте запустим следующий запрос и проверим вывод. На выходе получается тот же набор из пяти записей.

    ВЫБЕРИТЕ HireDate, BusinessEntityID, LoginID, JobTitle

    FROM HumanResources.Сотрудник

    ГДЕ HireDate = ’12-07-2008 ‘;

    ГО

    Примечание. Значения формата нейтрального языка неявны, и SQL Server выполнит необходимое преобразование. Любой другой формат даты SQL требует правильного преобразования операндов и / или значений.

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

ВЫБЕРИТЕ HireDate, BusinessEntityID, LoginID, JobTitle

FROM HumanResources.Сотрудник

ГДЕ HireDate = ’25-12-2008 ‘;

Теперь и операнд, и его значения преобразованы в стандартный формат 103. Здесь вы можете найти дополнительную информацию о функциях CAST и Convert. В следующем примере возвращаются все строки сотрудника, где HireDate ’25 -12-2008 ’

SELECT HireDate,

BusinessEntityID,

LoginID,

JobTitle

FROM HumanResources.Сотрудник

WHERE CONVERT (DATE, HireDate, 103) = CONVERT (DATE, ’25-12-2008 ‘, 103);

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

Давайте посмотрим на функцию DATEPART SQL.Эта функция возвращает целочисленное значение из указанного столбца даты.

Запросите столбец HireDate , чтобы получить только часть даты в году.

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

SELECT DATEPART (YEAR, HireDate) AS [Часть года]

FROM HumanResources.Сотрудник;

ГО

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

В следующем примере создается целочисленный выходной столбец с именем [Часть месяца], который должен возвращать только значения месяца.

SELECT DATEPART (MONTH, HireDate) AS [Часть месяца]

FROM HumanResources.Employee;

Запросите столбец HireDate , чтобы получить только квартальную часть даты.

В следующем примере создается целочисленный выходной столбец с именем [Часть месяца], который должен возвращать только значения месяца.

SELECT DATEPART (QUARTER, HireDate) AS [Quarter Part]

FROM HumanResources.Сотрудник;

ГО

В следующем примере возвращаются сведения о продажах за определенный день из поля orderDate. В примере также показано использование функции DATEPART SQL и нескольких связанных с ней аргументов.

SELECT DATEPART (DAY, SOH.OrderDate) [часть дня],

DATEPART (MONTH, SOH.OrderDate) [часть месяца],

DATEPART (QUARTER, SOH.OrderDate) [Quarter Part],

DATEPART (YEAR, SOH.OrderDate) [Year Part],

SUM (SOH.SubTotal) TotalSales

ИЗ продаж.SalesOrderHeader SOH

.SalesOrderHeader SOH

. SOD.SalesOrderId

GROUP BY DATEPART (DAY, SOH.OrderDate),

DATEPART (QUARTER, SOH.OrderDate),

DATEPART (YEAR, SOH.OrderDate),

DATEPART.MOND,

DATEPART. ЗАКАЗ ОТ ОТДЕЛЕНИЯ (КВАРТАЛ, SOH.OrderDate),

DATEPART (ГОД, SOH.OrderDate),

DATEPART (MONTH, SOH.OrderDate);

Оператор SELECT выбирает DATEPART, который является именем функции, и принимает два аргумента в круглых скобках. Во-первых, аргумент datepart, а второй — выражение даты.

Давайте посмотрим, как использовать функцию DATENAME SQL. Это похоже на функцию DATEPART SQL, но возвращает символьную строку из указанного поля даты.

SELECT DATENAME (WEEKDAY, HireDate) [Day], DATENAME (WEEK, HireDate) [Week], DATENAME (MONTH, HireDate) [Month], DATENAME (YEAR, HireDate) [YEAR]

FROM HumanResources;

ГО

Затем давайте взглянем на детерминированные функции, которые возвращают части даты и времени в виде целого числа. В следующем примере возвращаются целочисленные значения из поля OrderDate для соответствующих функций YEAR и MONTH.

ВЫБЕРИТЕ ГОД (SOH.OrderDate) как SalesYear,

MONTH (SOH.OrderDate) как SalesMonth,

SUM (SOH.SubTotal) как TotalSales

FROM sales.SalesOrderHeader SOH 9000INSail SalesOrderId = SOD.SalesOrderId

ГРУППА ПО ГОДУ (SOH.OrderDate), МЕСЯЦ (SOH.OrderDate)

ЗАКАЗ ПО ГОДУ (SOH.OrderDate), МЕСЯЦ (SOH.OrderDate)

Результатом является агрегированное значение TotalSales на основе ежемесячных продаж.

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

Давайте поиграем с запросом, чтобы использовать разные части даты, чтобы увидеть результаты.

SELECT DATEDIFF (YEAR, HireDate, GETDATE ()) No_Of_Years,

DATEDIFF (МЕСЯЦ, HireDate, GETDATE ()) No_Of_Months,

DATEDIFF (квартал, DATE_DATE_WR,

DATEDIFF (квартал, DATE_DATE), GETDIFO (квартал, DATE_DATE), GET_DATE) , GETDATE ()) Week_Of_Year,

DATEDIFF (DAYOFYEAR, HireDate, GETDATE ()) Day_Of_Year

FROM HumanResources.Сотрудник;

ГО

В следующем примере возвращаются части времени между двумя полями DateTime. В этом примере часы, минуты и секунды между значениями DateTime вычисляются с использованием функции SQL DATEDIFF

SELECT

DATEDIFF (час, GETDATE (), GETDATE () + 1) как часы,

DATEDIFF (минута, GETDATE (), GETDATE () + 1) как минуты,

DATEDIFF (секунда, GETDATE () , GETDATE () + 1) как секунды;

ГО

Как использовать функцию DATEDIFF SQL в предложении where

В следующем примере возвращаются все сотрудники, которые работают в организации более 10 лет.Условная логика в столбце HireDate сравнивается с периодом, превышающим 120 месяцев, упоминается в предложении where.

SELECT *

FROM HumanResources.Employee

WHERE DATEDIFF (MONTH, HireDate, GETDATE ())> 120;

ГО

Как использовать функцию DateDiff SQL с функцией агрегирования

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

ВЫБРАТЬ РАЗМЕР (ГОД, МИН (Дата найма), МАКС (Дата найма)) No_Of_Years

FROM HumanResources.Employee;

Давайте посмотрим на функцию DATEADD SQL.Функции добавляют или вычитают значение указанной datepart и возвращают измененное значение datepart.

Давайте посмотрим на следующий пример. Значение 1 добавляется к различным частям даты, а значение -1 добавляется к части даты часов и -30 добавляется к части даты минут .

1

2

3

4

5

6

7

8

9

10

11

12

13

140002

14

18

19

20

21

22

23

24

25

26

27

28

29

30

000

000 34

35

SELECT ‘TodayDate’,

GETDATE ()

UNION ALL

SELECT ‘год’,

DATEADD (год, 1, GETDATE ())

UNION ALL

SELECT ‘квартал’, 9000ADD

DATE ( квартал, 1, GETDATE ())

UNION ALL

SELECT ‘month’,

DATEADD (месяц, 1, GETDATE ())

UNION ALL

SELECT ‘dayofyear’,

DATEADD (dayofyear, 1, GETDATE ())

UNION ALL

SELECT ‘day’,

DATEADD (day, 1, GETDATE ())

UNION ALL

SELECT ‘week’,

DATEADD (неделя, 1, GETDATE ())

UNION ALL

SELECT ‘будний день’,

DATEADD (рабочий день, 1, GETDATE ())

UNION ALL

SELECT ‘час’,

DATEADD (час, -1, GETDATE ())

UNION ВСЕ

ВЫБРАТЬ ‘минута’,

DATEADD (минута, -30, GETDATE ())

UNION ALL

SELECT ‘секунда’,

DATEADD (секунда, 1, GETDATE ())

UNION ALL

SELECT ‘миллисекунда’,

DATEADD (миллисекунда, 1, GETDATE ())

В выводе мы видим, что значение обрабатывается функцией GETDATE () в соответствии с заданной частью даты.

Примечание. SQL-функцию DATEADD и DATEDIFF можно использовать в предложениях SELECT, WHERE, HAVING, GROUP BY и ORDER BY.

Datadiff против Datediff_BIG

РАЗНДАТ РАЗН DATEDIFF_BIG
Это очень старая функция, и она доступна в первоначальном выпуске SQL Server. С рождением SQL Server 2016 Microsoft представила новую функцию DATEDIFF SQL, расширенную версию DATEDIFF, известную как DATEDIFF_BIG.
Синтаксис РАЗНДАТ (datepart, start_date, end_date) Синтаксис DATEDIFF_BIG (часть даты, начальная_дата, конечная_дата)
Тип возврата функции DATEDIFF SQL — INTEGER (4 байта). Тип возвращаемого значения SQL-функции DATEDIFF_BIG — BIGINT ( 8 байт).
Эта функция возвращает целочисленное значение, представляющее прошедшее время или день на основе определенного DATEPART между указанным началом DateTime и конечным DateTime. Эта функция возвращает БОЛЬШОЕ целочисленное значение, представляющее прошедшее время или день на основе определенного DATEPART между указанным началом DateTime и конечным DateTime.
Целочисленное значение находится в диапазоне от -2 147 483 648 до +2 147 483 647. Тип данных BIGINT может хранить значение между диапазоном От -2 ^ 63 (-9,223,372,036,854,775,808) до 2 ^ 63-1 (9,223,372,036,854,775,807)
Пример: Этот пример демонстрирует поведение функции DATEDIFF SQL, когда разница в миллисекундах между двумя датами больше, чем INT max (т.е.е. 2 147 483 647) значение.

ВЫБЕРИТЕ РАЗНДАТ (МИЛЛИСЕКУНД, ‘20180101’, ‘20181231’) КАК ‘РАЗН. ДАННЫЕ МИЛЛИСЕКУНДЫ’;

Сообщение об ошибке: Функция DATEDIFF SQL привела к переполнению. Количество частей даты, разделяющих два экземпляра даты и времени, слишком велико. Попробуйте использовать dateiff с менее точной частью даты.
Пример: Этот пример демонстрирует поведение SQL-функции DATEDIFF_BIG, когда разница в миллисекундах между двумя датами больше, чем INT max (т.е.е. 2 147 483 647) значение.

SELECT DATEDIFF_BIG (MILLISECOND, ‘20180101’, ‘20181231’) AS ‘DIFF DATA MILLISECOND’;

DECLARE @StartDate datetime2 = ‘20180101 00:00: 00.0000000’;

DECLARE @EndDate datetime2 = DATEADD (год, 100, @StartDate);

SELECT

‘DATEDIFF’,

DATEDIFF (год, @ StartDate, @EndDate) AS Годы,

DATEDIFF (квартал, @StartDate, @EndDate) AS Quarters, @

DATEDIFF (год, @ StartDate, @EndDate) @EndDate) AS месяцев,

DATEDIFF (неделя, @StartDate, @EndDate) AS Weeks,

DATEDIFF (dayofyear, @StartDate, @EndDate) AS DayOfYear,

DATEDIFF (день, @StartDate) ,

DATEDIFF (MILLISECOND, @StartDate, @EndDate) AS Millsecond,

DATEDIFF (MICROSECOND, @StartDate, @EndDate) AS Micro,

DATEDIFF (NANOSECOND, @StartDate)

DECLARE @StartDate datetime2 = ‘20180101 00:00:00.0000000 ‘;

DECLARE @EndDate datetime2 = DATEADD (год, 100, @StartDate);

ВЫБРАТЬ

‘DATEDIFF_BIG’,

DATEDIFF_BIG (год, @ StartDate, @EndDate) AS Годы,

DATEDIFF_BIG (квартал, @StartDIG, @End_Date, 9000ED, квартал @EndDate) AS Месяцы,

DATEDIFF_BIG (неделя, @StartDate, @EndDate) AS Weeks,

DATEDIFF_BIG (dayofyear, @StartDate, @EndDate) AS DayOfYear,

DATEDIFF_day ,

DATEDIFF_BIG (MILLISECOND, @StartDate, @EndDate) AS Миллисекунды,

DATEDIFF_BIG (MICROSECOND, @StartDate, @EndDate) AS Micro,

DATEDIFF_BIG

На этом пока все в этой статье о формате даты SQL …

Заключение

До сих пор мы видели очень важные функции формата даты SQL, такие как DATEPART, DATENAME, YEAR, MONTH и DAY, с особым упором на SQL-функцию DATEADD и SQL-функцию DATEDIFF.Функции формата даты SQL в SQL-сервере действительно мощные и действительно помогают предоставлять эффективную аналитику данных и отчеты. В некоторых случаях это вопрос настройки параметров сортировки, настроек местоположения, простой корректировки входного потока текстового значения или исправления, внесенного в источник данных, для решения проблемы даты и времени.

Рекомендуется использовать формат нейтрального языка, потому что в большинстве случаев он работает лучше. Наконец, мы видим разницу между функцией DATEDIFF SQL и функцией DATEDIFF_BIG SQL.Надеюсь, вам понравилась эта статья. Если у вас есть вопросы, не стесняйтесь комментировать ниже


Я технолог по базам данных, имеющий более 11 лет богатого практического опыта работы с технологиями баз данных. Я являюсь сертифицированным специалистом Microsoft и имею степень магистра компьютерных приложений.

Моя специальность заключается в разработке и внедрении решений высокой доступности и кроссплатформенной миграции БД. В настоящее время разрабатываются технологии SQL Server, PowerShell, Oracle и MongoDB.

Посмотреть все сообщения от Prashanth Jayaram

Последние сообщения от Prashanth Jayaram (посмотреть все) .

Функция DATEADD SQL Server на практических примерах

Резюме : в этом руководстве вы узнаете, как использовать функцию SQL Server DATEADD () для добавления указанного значения к указанной части даты.

SQL Server DATEADD () Обзор функции

Функция DATEADD () добавляет число к указанной части даты ввода даты и возвращает измененное значение.

Ниже показан синтаксис функции DATEADD () :

 

DATEADD (date_part, value, input_date)

Функция DATEADD () принимает три аргумента:

  • date_part — это часть даты, к которой функция DATEADD () прибавит значение .(См. Допустимые части даты в таблице ниже)
  • значение — это целое число, которое нужно добавить к date_part из input_date . Если значение оценивается как десятичное или с плавающей запятой, функция DATEADD () усекает часть десятичной дроби. В этом случае округление числа не выполняется.
  • input_date — это буквальное значение даты или выражение, которое может разрешаться в значение типа DATE , DATETIME , DATETIMEOFFSET , DATETIME2 , SMALLATETIME или TIME или TIME или TIME В таблице перечислены действительные значения date_part :

    9007 4
    date_part сокращений
    год yy, yyyy
    квартал qq, q
    месяц mm, m
    dayofyear dy, y
    day dd, d
    неделя wk, ww
    час hh
    минут mi, n
    секунда сс, с
    миллисекунда мс
    микросекунда мкс
    наносекунда нс

    Функция DATEADD () функция возвращает новое значение даты после добавления значения к date_part .

    SQL Server DATEADD () Примеры функции

    Давайте рассмотрим несколько примеров использования функции DATEADD () .

    Добавить 1 секунду к 2018-12-31 23:59:59

     

    ВЫБРАТЬ DATEADD (second, 1, '2018-12-31 23:59:59') результат;

    Вот результат

     

    результат ----------------------- 2019-01-01 00: 00: 00.000 (Затронута 1 строка)

    Добавление 1 дня к 31.12.2018 00:00:00:

     

    ВЫБРАТЬ DATEADD (день, 1, '2018-12-31 23:59:59') результат;

    Результат:

     

    результат ----------------------- 2019-01-01 23:59:59.000 (Затронута 1 строка)

    В этом примере используется функция DATEADD () для расчета предполагаемой даты отгрузки на основе даты заказа:

     

    SELECT номер заказа, Пользовательский ИД, Дата заказа, DATEADD (день, 2, дата_порядка) предполагаемая_дата_поставки ОТ заказы на продажу ГДЕ shipped_date ЕСТЬ NULL СОРТИРОВАТЬ ПО приблизительная_поставленная_дата DESC;

    На следующем рисунке показан частичный вывод:

    Примеры обработки месяца

    Если вы добавляете число месяцев к дате, а день, когда результат даты не существует, функция DATEADD () вернет последний день месяца возврата.

    См. Следующий пример:

     

    SELECT DATEADD (месяц, 4, '2019-05-31') как результат;

    В этом примере месяц даты возврата - сентябрь. Однако 31-й день не существует в сентябре, поэтому функция DATEADD () возвращает последний день сентября (30) в качестве дня для даты результата:

     

    result ----------------------- 2019-09-30 00: 00: 00.000 (Затронута 1 строка)

    Обратите внимание, что следующий запрос возвращает тот же результат:

     

    SELECT DATEADD (месяц, 4, '2019-05-30') как результат;

    Вывод:

     

    результат ----------------------- 2019-09-30 00:00:00.000 (Затронута 1 строка)

    В этом руководстве вы узнали, как использовать функцию SQL Server DATEADD () для добавления указанного значения к части даты даты.

    .

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Theme: Overlay by Kaira Extra Text
Cape Town, South Africa