我一直在四處尋找的代碼塊找到當前周的第一天,到處看的第一天,我看到這一點:SQL服務器 - 尋找周
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日。
如果我運行:
第12屆SELECT GetDate()-2 , DATEADD(WK, DATEDIFF(WK,0,GETDATE()-2),0)
結果(星期日):
2013-05-12 09:40:14.817................2013-05-13 00:00:00.000
這是不正確的,它選擇週一13日的時候,應該選擇在上週一,六號。
任何人都可以照亮我這裏發生了什麼嗎?我發現很難相信沒有人指出這不起作用,所以我想知道我錯過了什麼。
我改變[yourDate]由GETDATE()相信問題的根源在於使用了SQL Server解析爲'1900-01-01'的日期0--這是一個星期一。 – 2013-05-14 17:14:39
[在SQL Server中獲取星期幾的第一天]可能的副本(http://stackoverflow.com/questions/7168874/get-first-day-of-week-in-sql-server) – Pondlife 2013-05-14 19:03:55
@Pondlife:並非如此。問題是爲什麼不同的星期一會返回,這取決於日期是星期日還是星期幾。 – 2013-05-15 11:14:59