我需要找到最后一次出现的日期(在我的情况下是 5 月 1 日的静态日期)
我做了这个,但我知道这可以用更聪明的方式完成
declare @lastmay date
set @lastmay = DATEADD(YY,YEAR(GETDATE())-2000,'20000501')
IF @lastmay <= GETDATE()
BEGIN
SET @lastmay = DATEADD(YY,-1,@lastmay)
END
我需要找到最后一次出现的日期(在我的情况下是 5 月 1 日的静态日期)
我做了这个,但我知道这可以用更聪明的方式完成
declare @lastmay date
set @lastmay = DATEADD(YY,YEAR(GETDATE())-2000,'20000501')
IF @lastmay <= GETDATE()
BEGIN
SET @lastmay = DATEADD(YY,-1,@lastmay)
END
当您在 SQL 中处理日期时,在您的数据库中拥有一个 Dates 实用程序表会很有帮助,然后您可以进行比较。
这篇文章很好地讨论了它:http ://www.techrepublic.com/blog/datacenter/simplify-sql-server-2005-queries-with-a-dates-table/326
如果您实现了您的查询可能会变得非常简单,例如(使用文章中的列)
Declare @lastmay date
Select @lastmay = DateFull
from DateLookup
where MonthNumber = 5
and MonthDay = 1
and Datefull < getdate()