2012-11-27 82 views

回答

4

這應該給你想要的東西

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,結果一倒:)

+1

我試過了,但我在11/9/2012的結果集中得到了一個日期。它應該從今天直到2012年11月15日纔會顯示。第一個案件不應該只來自本月而是上個月嗎? – JBurace

+0

至少你有想法如何做到這一點,你可以從這個工作,但我會看看明天(我的iPhone在這裏Im) – jazzytomato

+0

是的我剛剛注意到我倒過來,但不能從我的手機編輯,只是顛倒'then'和'else'的內容:-) – jazzytomato

3

以格式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天並返回新日期。