我想从今天到最后15日(所以本月或上个月)选择一系列数据。如何在TSQL中完成?
关注Get last Friday's Date unless today is Friday using T-SQL似乎我至少要使用DATEDIFF
。
我正在考虑建立一个日期字符串,例如:
set @date='yyyy-mm-15'
但yyyy
或mm
不能仅仅是当前的年/月,以防它必须回顾一个月/年。
答案 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天添加到当前日期并返回新日期。