小编Ron*_*ser的帖子

SQL Server - 查找一周的第一天

我一直在寻找一大堆代码来找到本周的第一天,我看到的每个地方都看到了这个:

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日.

谁能照亮我这里发生了什么?我发现很难相信没有人指出这不起作用,所以我想知道我错过了什么.

t-sql sql-server sql-server-2012

4
推荐指数
1
解决办法
5274
查看次数

标签 统计

sql-server ×1

sql-server-2012 ×1

t-sql ×1