1

我需要找到最后一次出现的日期(在我的情况下是 5 月 1 日的静态日期)

我做了这个,但我知道这可以用更聪明的方式完成

declare @lastmay date
set @lastmay = DATEADD(YY,YEAR(GETDATE())-2000,'20000501')
IF @lastmay <= GETDATE()
BEGIN
    SET @lastmay = DATEADD(YY,-1,@lastmay)
END
4

1 回答 1

0

当您在 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()
于 2011-05-23T23:13:00.877 回答