我一直在寻找一大堆代码来找到本周的第一天,我看到的每个地方都看到了这个:
DATEADD(WK, DATEDIFF(WK,0,GETDATE()),0)
Run Code Online (Sandbox Code Playgroud)
每个地方都说这是我正在寻找的代码.
这段代码的问题在于,如果你在星期天运行它,它会选择下一个星期一.
如果我跑:
SELECT GetDate() , DATEADD(WK, DATEDIFF(WK,0,GETDATE()),0)
Run Code Online (Sandbox Code Playgroud)
今日(星期二)的结果:
2013-05-14 09:36:39.650................2013-05-13 00:00:00.000
Run Code Online (Sandbox Code Playgroud)
这是正确的,它选择了13日星期一.
如果我跑:
SELECT GetDate()-1 , DATEADD(WK, DATEDIFF(WK,0,GETDATE()-1),0)
Run Code Online (Sandbox Code Playgroud)
昨天(星期一)的结果:
2013-05-13 09:38:57.950................2013-05-13 00:00:00.000
Run Code Online (Sandbox Code Playgroud)
这是正确的,它选择了13日星期一.
如果我跑:
SELECT GetDate()-2 , DATEADD(WK, DATEDIFF(WK,0,GETDATE()-2),0)
Run Code Online (Sandbox Code Playgroud)
12日(星期日)的结果:
2013-05-12 09:40:14.817................2013-05-13 00:00:00.000
Run Code Online (Sandbox Code Playgroud)
这是不正确的,它选择在13日星期一选择上一个星期一,即6日.
谁能照亮我这里发生了什么?我发现很难相信没有人指出这不起作用,所以我想知道我错过了什么.