使用SQL Server,我有一個包含啓動日期(dateTime
)的列。我想報告上個月(從觀看日期)到本月和下個月的所有內容。SQL - 從dateTime列中獲取基於月的數據
所以基本上是整整3個月的時間。
寫這個的最好方法是什麼?
使用SQL Server,我有一個包含啓動日期(dateTime
)的列。我想報告上個月(從觀看日期)到本月和下個月的所有內容。SQL - 從dateTime列中獲取基於月的數據
所以基本上是整整3個月的時間。
寫這個的最好方法是什麼?
您正在尋找這樣的事情?
DECLARE
@StartDate DATETIME,
@EndDate DATETIME
SELECT
@StartDate = DATEADD(MM, DATEDIFF(MM, 0, GETDATE()) - 1, 0),
@EndDate = DATEADD(MM, DATEDIFF(MM, 0, GETDATE()) + 2, 0)
-- DATEADD(MM, DATEDIFF(MM, 0, GETDATE()), 0), -- beginning of this month
-- DATEADD(MM, DATEDIFF(MM, 0, GETDATE()) - 1, 0), -- beginning of last month
-- DATEADD(MM, DATEDIFF(MM, 0, GETDATE()) + 1, 0) -- beginning of next month
-- DATEADD(MM, DATEDIFF(MM, 0, GETDATE()) + 2, 0) -- beginning of two months from now
SELECT
*
FROM
[Table]
WHERE
[LaunchDate] >= @StartDate
AND [LaunchDate] < @EndDate
這會給你所有從上月的開始,兩個月從現在(整整3個月的範圍)開始之前開始結果
SELECT Foo
FROM Bar
WHERE LaunchDate >= DATEADD(mm, -1, GETDATE())
AND LaunchDate <= DATEADD(mm, 1, GETDATE())
這不會去年初這個月(這聽起來像是OP的意圖),但會進行3個月的滾動。 – 2012-02-09 21:07:45
@MarkBrackett - 「關於上個月(從查看日期)到本月和下個月之間所有內容正在啓動的所有內容的報告」這聽起來像是對我的滾動窗口請求。 – 2012-02-09 21:10:18
也許像SELECT /*what_you_want*/ from launches WHERE lauchDate BETWEEN DATEADD(MONTH, DATEDIFF(MONTH, '19000101', GETDATE()) - 1, '19000101') AND DATEADD(MONTH, DATEDIFF(MONTH, '19000101', GETDATE()) + 2, '19000101')
我剛剛測試過它,它工作得很好!感謝您的快速回復! (MM,DATEDIFF(MM,0,GETDATE()) - 1,0))AND(launchDate <= DATEADD(MM,DATEDIFF(MM,0,GETDATE())+ 2,0) ) – 2012-02-09 21:17:18