从今天开始选择数据直到每个月的最后15个月?

时间:2012-11-27 17:19:41

标签: sql sql-server tsql

我想从今天到最后15日(所以本月或上个月)选择一系列数据。如何在TSQL中完成?

关注Get last Friday's Date unless today is Friday using T-SQL似乎我至少要使用DATEDIFF

我正在考虑建立一个日期字符串,例如:

set @date='yyyy-mm-15'

yyyymm不能仅仅是当前的年/月,以防它必须回顾一个月/年。

2 个答案:

答案 0 :(得分: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)

修改 改变了一天(getdate())&gt; 15 WHEN DAY(getdate())&lt; 15,结果倒置了:)

答案 1 :(得分:3)

yyyy-mm-15格式格式化当前日期,转换回日期,与当前日期进行比较,如果今天晚些时候,则减去1个月。

这就是我在ANSI SQL中所做的...但显然,MS SQL Server不知道“间隔”。那么,您可以使用DateAdd代替:

  

DateAdd() - 基于向指定日期添加间隔返回新的日期时间值。   第一个参数指定日期的哪一部分返回一个新值:yy(yyyy)表示Year,mm(m)表示Month,dd(d)表示Day等。   例如:select dateadd(d,2,getdate()) - 将2天添加到当前日期并返回新日期。