3

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

Get last Friday's Date 之后,除非今天是使用 T-SQL 的星期五,否则我似乎DATEDIFF至少必须使用它。

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

set @date='yyyy-mm-15'

但是yyyyormm不能简单地是当前的年/月,以防它必须回顾一个月/年。

4

2 回答 2

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)

编辑 将 WHEN DAY(getdate()) > 15更改为WHEN DAY(getdate()) < 15,因为结果被反转了:)

于 2012-11-27T17:35:48.803 回答
3

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

这就是我在 ANSI SQL 中所做的……但显然,MS SQL Server 不知道“间隔”。好吧,您可以改用DateAdd

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

于 2012-11-27T17:39:50.397 回答