【发布时间】:2018-08-26 15:16:03
【问题描述】:
如果不是 0,我想检查该字段,
如果年龄大于今天,我会检查Where。
代码:
select *
from aa
WHERE (datediff(month, dateadd(day,-day(birthDate1)+1,birthDate1),dateadd(day,-day(birthDate1)+1,GETDATE()))>=828.0)
or (datediff(month, dateadd(day,-day(birthDate2)+1,birthDate2),dateadd(day,-day(birthDate2)+1,GETDATE()))>=828.0)
然后有一个异常:
Conversion failed when converting date and/or time from character string.
如果我只问一个问题,效果很好:
select *
from aa
WHERE (birthDate1 <> '00000000') and DATEDIFF(YEAR,birthDate1 ,GETDATE())>18
【问题讨论】:
-
样本数据和期望的结果真的很有帮助。
-
@Sami - 我正在尝试
int但它没有帮助 -
@GordonLinoff - 字段类型为:
varchar(2000) -
您知道这不是检查年龄的正确方法吗?
DATEDIFF(YEAR...只检查年的差异,不检查月和日。 -
您能准确地告诉我们您所说的 0.10 年是什么意思吗?在我的职业生涯中,我花了很多时间为许多客户制定日历周期的小部分。我可以告诉你,每个人都有不同的定义。
标签: sql sql-server tsql sql-server-2014