SQL. Как работать с датами в SQL Server

Время чтения - 2 мин.Дата публикации 19.02.2020 (обновлено 14.12.2023)

Из строки в дату и обратно

Приведение строки к дате 

-- формат dd.mm.yyyy
select try_convert(date, isnull(@fielddateBirth,'01.01.1980'), 104)

-- формат yyyy-mm-dd
select try_convert(date, isnull(@fielddateBirth,'1980-01-01'), 23)

Приведение даты к строке

-- формат dd.MM.yyyy
select try_convert(nvarchar(16), getdate(), 104)

-- формат yyyy-mm-dd
select convert(nvarchar, isnull(dateBirth,'1900-01-01'), 23)

Приведение даты к строке в заданном формате: 

select format(getdate(), 'dd.MM.yyyy HH:mm')

 

Полезные функции по работе с датами

select getdate() -- получить текущую дату

select dateadd(day, 7, getdate()) -- добавить 7 дней к дате

select dateadd(month, -2, getdate()) -- отнять 2 месяца от даты

select datediff(minute, date1, date2) -- получить разницу в минутах между date2 и date1

SELECT DAY(GETDATE())       -- 28  получить день даты (аналогично month, year, week)

SELECT DATENAME(month, GETDATE())       -- July получить название месяца 

SELECT DATEPART(month, GETDATE())       -- 7 получить часть даты (например, месяц, год или день)

SELECT DATEFROMPARTS(2017, 7, 28)       -- 2017-07-28  строит дату из частей

SELECT ISDATE('2017-07-28')     -- 1 - проверка является ли строка датой 

 

Полезные вычисления по датам (типовые задачи)

-- начало и конец недели
SET DATEFIRST 4   /* or use any other weird value to test it */
DECLARE @d DATETIME = GETDATE()
SELECT
  @d ThatDate,
  cast( DATEADD(dd, 0 - (@@DATEFIRST + 5 + DATEPART(dw, @d)) % 7, @d) as date) Monday,
  cast(DATEADD(dd, 6 - (@@DATEFIRST + 5 + DATEPART(dw, @d)) % 7, @d) as date) Sunday


-- начало месяца
SELECT DATEADD(month, DATEDIFF(month, 0, @d), 0) AS StartOfMonth

-- номер недели в году 
set datefirst 1;
select datepart(week, '2017-02-01');

-- получение дня недели
select datename(dw,getdate()) --Thursday
select datepart(dw,getdate()) --2

 

Форматы дат: https://www.mssqltips.com/sqlservertip/1145/date-and-time-conversions-using-sql-server/

Работа с датами на Metanit - https://metanit.com/sql/sqlserver/8.3.php

Дополнительные материалы

  1. Особенности работы с датами в формах на Falcon Space
  2. Как настроить выбор вариантов для поля интервал дат
  3. Как в выборе даты задать доступные даты
  4. Обработка даты из поля datetime-local

 

Насколько полезной была статья?

Что еще посмотреть по SQL Server

Как организовать бизнес-логику в хранимых процедурах SQL Server. Реализация слоя BLL в SQL

Индексы SQL Server. Поиск дубликатов

Запрос для получения SQL всех индексов для таблиц базы данных SQL Server

Как перестроить все индексы на базе SQL Server

Как разрезать строку на части в SQL по некоторому символу

Конвертация из строки в таблицу в SQL Server

Выполнение прямого запроса к URL из SQL

SQL Server Как установить у таблицы описание (MS Description)

Как получить текущего юзера БД

Как хранить в 1 поле таблицы БД значения разных типов?

Генерация MD5 в SQL Server

Как привести телефон в нормализованный вид

Дополнительный заработок для разработчиков на T-SQL

Прямая работа с заказчиками как ИП или самозанятый. Нужно знать только SQL и HTML.
Falcon Space - платформа для создания сайтов с личными кабинетами
В 2-3 раза экономнее и быстрее, чем заказная разработка
Более гибкая, чем коробочные решения и облачные сервисы
Используйте готовые решения и изменяйте под свои потребности
Запрос расчета стоимости веб-проекта на базе Falcon Space
Если видео Youtube плохо грузится, то попробуйте найти видео в ВК видео на канале Falcon Space
Сайт использует Cookie, Яндекс Метрику. Используя сайт, вы соглашаетесь с правилами сайта. См. Правила конфиденциальности и Правила использования сайта OK