最后一次出现的日期

时间:2011-05-23 19:53:34

标签: sql-server tsql date dateadd

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

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

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

1 个答案:

答案 0 :(得分: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()