SQL 查询周开始结束日期
-
DECLARE @dbDefaultWeekStart INTEGER = @@DATEFIRST; /*take backup of db default week start day*/
-
DECLARE @expectedWeekStart INTEGER = 6; /*expected week start from 'Saturday'*/
-
SET DATEFIRST @expectedWeekStart; /*set week start day as expected*/
-
/*doing our calculation as needed*/
-
DECLARE @dateTimeNow DATETIME = GETDATE();
-
SELECT
-
[StartDate] = DATEADD(dd, -(DATEPART(WEEKDAY, @dateTimeNow)-1),
-
DATEADD(dd, DATEDIFF(dd, 0, @dateTimeNow), 0)),
-
[EndDate] = DATEADD(dd, 7-(DATEPART(WEEKDAY, @dateTimeNow)),
-
DATEADD(dd, DATEDIFF(dd, 0, @dateTimeNow), 0));
-
SELECT
-
[StartDateTime] = DATEADD(DAY, -(DATEPART(WEEKDAY, @dateTimeNow)-1),
-
DATEADD(DAY, DATEDIFF(DAY, 0, @dateTimeNow), 0)),
-
[EndDateTime] = DATEADD(DAY, 7-(DATEPART(WEEKDAY, @dateTimeNow)),
-
DATEADD(SECOND, -1, DATEADD(DAY, DATEDIFF(DAY, 0, @dateTimeNow) + 1, 0)))
-
/*reset week start date to its default or as it was*/
-
SET DATEFIRST @dbDefaultWeekStart;
浙公网安备 33010602011771号