SQL. Как работать с датами в SQL Server
Из строки в дату и обратно
Приведение строки к дате
Приведение даты к строке
Приведение даты к строке в заданном формате:
Полезные функции по работе с датами
Полезные вычисления по датам (типовые задачи)
Из строки в дату и обратно
Приведение строки к дате
SQL:
-- формат dd.mm.yyyy
select try_convert(date, isnull(@fielddateBirth,'01.01.1980'), 104)
SQL:
-- формат yyyy-mm-dd
select try_convert(date, isnull(@fielddateBirth,'1980-01-01'), 23)
Приведение даты к строке
SQL:
-- формат dd.MM.yyyy
select try_convert(nvarchar(16), getdate(), 104)
SQL:
-- формат yyyy-mm-dd
select convert(nvarchar, isnull(dateBirth,'1900-01-01'), 23)
Приведение даты к строке в заданном формате:
SQL:
select format(getdate(), 'dd.MM.yyyy HH:mm')
Полезные функции по работе с датами
SQL:
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 - проверка является ли строка датой
Полезные вычисления по датам (типовые задачи)
SQL:
-- начало и конец недели
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