我想從今天到最後15日選擇一系列數據(所以這個月或上個月)。這將如何在TSQL中完成?從今天至選擇月份的最後15天選擇數據?
正在關注Get last Friday's Date unless today is Friday using T-SQL好像我不得不使用DATEDIFF
至少。
我正在考慮建立一個日期字符串,如:
set @date='yyyy-mm-15'
但yyyy
或mm
將不能夠僅僅是當前年/月要在情況下,它必須回首月/年。
我想從今天到最後15日選擇一系列數據(所以這個月或上個月)。這將如何在TSQL中完成?從今天至選擇月份的最後15天選擇數據?
正在關注Get last Friday's Date unless today is Friday using T-SQL好像我不得不使用DATEDIFF
至少。
我正在考慮建立一個日期字符串,如:
set @date='yyyy-mm-15'
但yyyy
或mm
將不能夠僅僅是當前年/月要在情況下,它必須回首月/年。
這應該給你想要的東西
SELECT *
FROM YourTable
WHERE YourDate > CAST((
CASE
WHEN DAY(getdate()) < 15
THEN (CAST(YEAR(GETDATE()) AS CHAR(4)) + CAST(MONTH(dateadd(month, - 1, getdate())) AS CHAR(2)) + '15')
ELSE CAST(YEAR(GETDATE()) AS CHAR(4)) + CAST(MONTH(GETDATE()) AS CHAR(2)) + '15'
END
) AS DATETIME)
編輯 更改。當DAY(GETDATE())> 15 到 WHEN DAY(GETDATE())< 15,結果一倒:)
以格式yyyy-mm-15
格式化當前日期,將其轉換回日期,與當前日期進行比較,如果這是今天晚些時候,則減去1個月。
這就是我在ANSI SQL中所做的......但顯然,MS SQL Server並不知道「間隔」。那麼,你可以利用DateAdd代替:
使用DateAdd() - 返回的基礎上加入的間隔到指定的日期一新的datetime值。 其中第一個參數指定日期的哪一部分返回新值:yy(yyyy)爲Year,mm(m)爲Month,dd(d)爲Day等 例如:select dateadd(d,2, getdate()) - 爲當前日期添加2天並返回新日期。
我試過了,但我在11/9/2012的結果集中得到了一個日期。它應該從今天直到2012年11月15日纔會顯示。第一個案件不應該只來自本月而是上個月嗎? – JBurace
至少你有想法如何做到這一點,你可以從這個工作,但我會看看明天(我的iPhone在這裏Im) – jazzytomato
是的我剛剛注意到我倒過來,但不能從我的手機編輯,只是顛倒'then'和'else'的內容:-) – jazzytomato