簡體   English   中英

找到一周的最后一天

[英]Finding the last day of the week

我有一個包含一堆日期的表(選項成熟日期准確無誤)。 我需要查詢此數據庫以查找存儲在表中的特定周的最后一天。

所有我將被要求查詢此表是年,月和具體的一周。 基於此,我需要找到存儲在與此匹配的表中的日期。

我創建了以下查詢以查找此特定日期2013年3月28日

SELECT M_SETNAME, M_LABEL, M_MAT FROM OM_MAT_DBF
WHERE M_SETNAME = 'IMM_OSET  '
AND MONTH(M_MAT) = 3
AND YEAR(M_MAT) = 2013
AND ((DATEPART(day,M_MAT)-1)/7 + 1) = 5

你們有沒有想過如何改變最后一個條件,以便3月28日被認為是本月的第5周,而不是目前正在進行的第4周。

您也可以使用DATEPART獲取一周的數量(在一年中),但是,您也可以獲得每個月的第一個月,並且也可以獲得一周,這樣您就可以擁有:我的日期 - 第一天的一周這個月+ 1。

這里有一個例子......

DECLARE @Dt datetime

SELECT @Dt='03-28-2013'

SELECT DATEPART( wk, @Dt) - DATEPART( wk, Convert(Date,Convert(varchar(4),YEAR(@Dt))
+ '-' + Convert(varchar(2), MONTH(@Dt))
+ '-' + Convert(varchar(2), 1))) + 1

編輯:另外,查看您的代碼,您可以添加CEILING。 如果結果== 2.7,則意味着它通過了第二周,但是當它實際上應該是3時,它會四舍五入為2。

如果你添加CEILING和CONVERT到十進制應該工作..

SELECT  MONTH(@Dt), 
        YEAR(@Dt), 
        ((CEILING(Convert(decimal,DATEPART(day,@Dt)-1)/7)) + 1) 

暫無
暫無

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

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