【发布时间】:2012-03-19 03:18:12
【问题描述】:
我的示例查询:
declare @todaysdate datetime = getdate()
select * from foo f
WHERE f.completedt < (CAST(MONTH(@todaysdate) AS VARCHAR) + '/' + CAST(DAY(@todaysdate) AS VARCHAR) + '/' + CAST(f.yr - 1 AS VARCHAR))
如果您看到我在 where 子句中使用 (yr - 1) 并且这会在 2011 年、2010 年抛出 date out of range 错误,有没有一种好方法可以在查询中检查闰年并使用正确的日期?
【问题讨论】:
-
为什么不在示例查询中使用 datadd 或 datediff ,而这就是标题中的内容?看起来 Dateadd 会按照 Diego 的回答做到这一点......我们在这里遗漏了什么吗?
标签: .net sql sql-server sql-server-2008 sql-server-2005