[英]How to get previous 6 months data, group by each month starting with current month in oracle sql?
[英]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.