【问题标题】:DOB in select rounded to year选定的 DOB 舍入到年份
【发布时间】:2013-04-18 22:41:13
【问题描述】:

我有程序

create procedure sp_ChildrenOlderThan5Years
as
select clientid,firstName,MidInitial, LastName, address, city, 'AK' as 'State', zip,DATEDIFF(YEAR,dob,GETDATE()) as age
from Clients
where CategCode = 'CH' and StatusID in (1,2,6) and DATEDIFF(YEAR,dob,GETDATE())>6
go

必须显示 6 岁以上的客户。但是我刚刚发现他们的年龄差不多,例如如果客户出生于 2007 年 7 月 20 日,它仍然会在列表中显示该客户,但他或她不是六岁。我知道DATEDIFF(YEAR,dob,GETDATE()) 的问题,但不知道如何解决。
我只需要其中列出的年龄大于或等于 5 岁零 10 个月的客户。

【问题讨论】:

    标签: sql sql-server-2008 procedure date


    【解决方案1】:

    由于您正在寻找年龄超过 5 岁零 10 个月(或相等)的人,请使用:

     datediff(month,dob,getdate()) >= 70
    

    【讨论】:

    • 但是如何在选择 DATEDIFF(YEAR,dob,GETDATE()) as age 中显示确切的年龄,例如 5.8,因为它告诉我他们都是 6 岁 :)
    • DateDiff 将始终返回一个整数。你可以将 datediff(month,dob,getdate()) 除以 12 得到 5.8
    • 谢谢!!它仍然显示整数,但它还可以:) 至少它显示它们是 6 年还是 5 年 :)
    猜你喜欢
    • 2021-08-10
    • 2013-05-12
    • 2022-01-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-13
    • 1970-01-01
    相关资源
    最近更新 更多