我想从今天到最后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