我一直在寻找一大段代码来找到本周的第一天,并且在任何地方我都能看到:
DATEADD(WK, DATEDIFF(WK,0,GETDATE()),0)
每个地方都说这是我正在寻找的代码。
这段代码的问题是,如果你在星期日运行它,它会选择下一个星期一。
如果我运行:
SELECT GetDate() , DATEADD(WK, DATEDIFF(WK,0,GETDATE()),0)
今天(星期二)的结果:
2013-05-14 09:36:39.650................2013-05-13 00:00:00.000
这是正确的,它选择 13 号星期一。
如果我运行:
SELECT GetDate()-1 , DATEADD(WK, DATEDIFF(WK,0,GETDATE()-1),0)
昨天(星期一)的成绩:
2013-05-13 09:38:57.950................2013-05-13 00:00:00.000
这是正确的,它选择 13 号星期一。
如果我运行:
SELECT GetDate()-2 , DATEADD(WK, DATEDIFF(WK,0,GETDATE()-2),0)
12日(星期日)成绩:
2013-05-12 09:40:14.817................2013-05-13 00:00:00.000
这是不正确的,它选择了13号星期一,而它应该选择前一个星期一,6号。
谁能告诉我这里发生了什么?我很难相信没有人指出这不起作用,所以我想知道我错过了什么。