我需要找到一个日期的最后一次出现(在我的情况下是静态日期5月1日)
我做了这个有效,但我知道这可以用更聪明的方式完成
declare @lastmay date
set @lastmay = DATEADD(YY,YEAR(GETDATE())-2000,'20000501')
IF @lastmay <= GETDATE()
BEGIN
SET @lastmay = DATEADD(YY,-1,@lastmay)
END
答案 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()