簡體   English   中英

SQL Server:獲取當前月份和前幾個月

[英]SQL Server: get current month and previous months

我有一張表,其列dateE的格式為nvarchar(20)並包含格式為yyyy-mm-dd的日期。 以下存儲過程從2014年4月開始使用dateE從該表中獲取所有記錄:

BEGIN
    SET NOCOUNT ON;
    SELECT      cat,
                COUNT(*) AS groupCount
    FROM        Log_PE 
    WHERE       dateE LIKE '2014-04%'
    GROUP BY    cat
    ORDER BY    groupCount desc, cat
END

我該如何更改它,這樣我就不必對日期進行硬編碼,而是始終為此使用當前的年和月?

此外,我想使用相同的存儲過程從前三個月(在本例中為2014年1月,2月,2014年3月)中獲取相同的數據,以便最終獲得與示例相同的排名,但每個在上述月份中。

這里有人可以幫助我嗎?

蒂姆,非常感謝。

而不是比較字符串,而是比較日期。 嘗試這個:

SELECT      cat, COUNT(*) AS groupCount
FROM        Log_PE 
WHERE       CONVERT(DATE, dateE, 120) >= 
              CONVERT(DATE, CONVERT(VARCHAR(6), GETDATE(), 112) + '01', 112)

GROUP BY    cat
ORDER BY    groupCount desc, cat

說明:

--Convert your string date column to a date type (yyyy-mm-dd --> 120)
CONVERT(DATE, dateE, 120)

--Convert the current date to yyyymmdd format (style 112) 
--and get the first 6 characters. ie; Year and month
CONVERT(VARCHAR(6), GETDATE(), 112) 

--Add `'01'` to the `yyyymm` and convert back to a date type
CONVERT(DATE, CONVERT(VARCHAR(6), GETDATE(), 112) + '01', 112) 

嘗試使用此日期表達式:

...where dateE LIKE convert(varchar (7), GETDATE(), 20) + '%'

暫無
暫無

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

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