我正在使用SQL Server。
从每行中,我从字段c.daybirth,c.monthbirth中获取日期和月份值 和来自getdate()的年份,我希望有一个字段显示此日期是否有效(无效示例:2月31日)
我创建了这个解决方案:
case day(dateadd(month,c.monthbirth-1,dateadd(day,c.daybirth-1,DATEADD(yy, DATEDIFF(yy, 0, GETDATE()), 0)))) when c.daybirth then 1 else 0 end
有效,但我觉得很难读。有更聪明的选择吗?
答案 0 :(得分:1)
在SQL Server 2012+中,您可以执行以下操作:
where try_convert(date,
datefromparts(year(getdate()), c.monthbirth, c.daybirth)
) is not null
编辑:
好玩。这样更好:
where try_convert(date,
cast(year(getdate()) * 10000 + c.monthbirth * 100 + c.daybirth as varchar(255))
) is not null