如何在SQL Server 2008中计算所需的日期?
需要检查今天的日期是否<20,然后将结果变量设置为下个月的1号。 如果今天的日期>20,则将结果var设置为下个月的下个月1号 例如:如何在SQL Server 2008中计算所需的日期?,sql,sql-server-2008,Sql,Sql Server 2008,需要检查今天的日期是否20,则将结果var设置为下个月的下个月1号 例如: 对于2015年9月24日将结果设置为2015年11月1日 对于2015年9月19日将结果设置为2015年10月1日 由于日期算法的原因,这似乎有点棘手: set @var = (case when day(getdate()) < 20 then cast(dateadd(month, 1, dateadd(day, 1 - day(getdate()), getdate()))
- 对于
将结果设置为2015年9月24日
2015年11月1日
- 对于
将结果设置为2015年9月19日
2015年10月1日
- 由于日期算法的原因,这似乎有点棘手:
set @var = (case when day(getdate()) < 20
then cast(dateadd(month, 1, dateadd(day, 1 - day(getdate()), getdate())) as date)
else cast(dateadd(month, 2, dateadd(day, 1 - day(getdate()), getdate())) as date)
end);
set@var=(日期(getdate())<20时的大小写)
然后将dateadd(月,1,dateadd(天,1-day(getdate()),getdate())转换为日期)
else cast(dateadd(月,2,dateadd(天,1-day(getdate()),getdate())作为日期)
(完),;
是显示计算结果的SQL小提琴。这将为您提供结果:
DECLARE @d DATE = '20150924'
SELECT CASE WHEN DAY(@d) < 20
THEN DATEADD(mm, 1, DATEADD(dd, -DAY(@d) + 1, @d))
ELSE DATEADD(mm, 2, DATEADD(dd, -DAY(@d) + 1, @d)) END;
DECLARE@d DATE='20150924'
当日(@d)<20时选择案例
然后DATEADD(mm,1,DATEADD(dd,-DAY(@d)+1,@d))
其他日期添加(mm,2,DATEADD(dd,-DAY(@d)+1,@d))结束;
我不知道为什么会投反对票,这是一个完全合理(但有点困难)的问题。糟糕的措辞可能是语言障碍的问题。谢谢。这正是我想要的。