11 мар. 2009 г.

T-SQL: Несколько полезных приемов работы с датами

Получение даты/времени начала и конца дня, недели, месяца, года для заданной даты:
DECLARE @Date AS DateTime
SET @Date = GETDATE()

SELECT
DateAdd(day, DateDiff(day, 0, @Date), 0) AS DayStart,
DateAdd(second, -1, DateAdd(day, DateDiff(day, 0, @Date)+1, 0)) AS DayEnd,
DateAdd(week, DateDiff(week, 0, @Date), 0) AS WeekStart,
DateAdd(second, -1, DateAdd(week, DateDiff(week, 0, @Date)+1, 0)) AS WeedEnd,
DateAdd(month, DateDiff(month, 0, @Date), 0) AS MonthStart,
DateAdd(second, -1, DateAdd(month, DateDiff(month, 0, @Date)+1, 0)) AS MonthEnd,
DateAdd(year, DateDiff(year, 0, @Date), 0) AS YearStart,
DateAdd(second, -1, DateAdd(year, DateDiff(year, 0, @Date)+1, 0 ) AS YearEnd

Мне в свое время очень пригодилось.
А это - получение первого дня недели
DATEADD(DAY, DATEDIFF(DAY,0, DATEADD(WEEK,@W,@Y))/7*7-1,0)[Первый день недели - воскресенье],
DATEADD(DAY, DATEDIFF(DAY,0, DATEADD(WEEK,@W,@Y))/7*7+5,0)[Последний день недели - суббота];

Комментариев нет:

Отправить комментарий