簡體   English   中英

在該周具有隨機日期(例如周五)的當前日期時,獲取該周的開始日期(例如周一)

[英]Get date of start day (ex Monday) of a week when having a current date of a random day (ex Friday) in that week

例如,我一周的開始日期是星期一 (2/1/2011),當用戶輸入是 (4/1/2011) 星期三時,是否有任何內置函數可以幫助我獲取當前的開始日期星期?

謝謝你。

假設 SQL 服務器的DATEFIRST設置符合您對周如何對齊的想法(這可能僅適用於周六、周日等),那么來自任意周一的 DATEADD/DATEDIFF 對應該給出您想要的結果:

select DATEADD(week,DATEDIFF(week,'20110103',CURRENT_TIMESTAMP),'20110103')

CURRENT_TIMESTAMP顯然選擇了今天的日期。 如果您從一個表 ( Tab ) 中選擇一個名為RandomDate的列,那么您可以這樣做:

select DATEADD(week,DATEDIFF(week,'20110103',RandomDate),'20110103') as MondayDate
from Tab

但是我對您的示例感到困惑,因為 1 月 2 日和 2 月 1 日(通常解釋為“2/1/2011”的可能性)都不是星期一。 我選擇的隨機星期一是'20110103' - 因此,如果您需要查找特定日期的星期五,則在出現'20110107' '20110103'

為此沒有內置 function,

但是你可以使用:

SELECT      DATEADD(WEEK, DATEDIFF(WEEK, 0, GETDATE()), 0)
select getdate() - CAST(getdate()-.5 as int)%7

或者

select cast(getdate() - CAST(getdate()-.5 as int)%7 as date)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM