【问题标题】:Calculate the age in Microsoft SQL Server Management Studio在 Microsoft SQL Server Management Studio 中计算年龄
【发布时间】:2017-12-20 01:10:43
【问题描述】:

我正在这样做,但结果给了我所有 30 岁和不到 30 岁的名字。

这是数据库:

  • 捐赠者(捐赠者 ID、名字、姓氏、出生日期、性别、捐赠日期)
  • 捐赠者电话(捐赠者 ID、电话号码)
  • 诊所(诊所 ID、诊所名称、诊所位置)
  • 血液(Blood-ID,血型)
  • 捐赠日(血液状况、捐赠日期)
  • 员工(员工 ID、名字、姓氏、性别)

我使用了这段代码——哪里错了?

SELECT
    GETDATE () AS FirstName, 
    FirstName, LastName,
    DATEADD(DD, 30, GETDATE()) AS [DateOfDonate- DateOfBirth],
    DATEADD(DD, 1-1-2000, GETDATE()) AS [DonateOfDate]
FROM
    Donor

我需要解决这个问题:找出年龄在 30 岁以上且自 2000 年 1 月 1 日以来一直捐赠的捐赠者的姓名

【问题讨论】:

  • 好的,DATEADD() 的第二个参数是一个整数。所以在一个地方你将30天添加到today,在另一个地方你添加-2000(你包含了一个计算,而不是一个日期,1 - 1 - 2000的结果是@ 987654329@)today。但我不知道你想要做什么。最好的建议是提供一些示例数据(来自donor 表),然后从该示例数据中提供一些您想要的示例结果。另外,也许读过这个? stackoverflow.com/help/mcve
  • 查找年龄在 30 岁以上且自 2000 年 1 月 1 日以来进行捐赠的捐赠者的姓名。我想解决这个问题
  • 这个链接是关于"How to calculate age in Years"由KM回答的。

标签: sql sql-server


【解决方案1】:
SELECT
    *
FROM
   donor
WHERE
        [date-of-birth]  <= DATEADD(YEAR, -30, GETDATE())  -- Anyone born more than 30 years ago
    AND [date-of-donate] >= '2000-01-01'                   -- Anyone that donated since 1st Jan 2000

【讨论】:

    【解决方案2】:

    抱歉之前的错字。我用实际字段计算,然后用你的替换,结果一团糟。 请在下面使用

      cast(datediff(Year,Date-Of-Birth,getdate()) as nvarchar(100))
    + ' Years , '
    + cast(datediff(Month,Date-Of-Birth,getdate())%12 as nvarchar(100))
    + ' months and '
    + cast(datediff(day,Date-Of-Birth,getdate()) as nvarchar(100))
    +' days '
    

    【讨论】:

    • 我需要它作为 SQL 语句
    • 我需要解决这个问题:查找年龄在 30 岁以上且自 2000 年 1 月 1 日以来一直捐赠的捐赠者的姓名
    • day 部分将给出一个非常大的数字...而这不是 OP 所要求的...
    【解决方案3】:
     select  FirstName+" "+ LastName from Donor
     where  datediff(year,Date-of-birth,getdate()) >30 and Date-of-donate>
     convert(date,'Date-of-donate',103)=convert(date,'Date-of-
     donate',103)='1/1/2000'
    

    这对你有用

    【讨论】:

    • 这是什么意思? and Date-of-donate&gt;='' convert(date,'Date-of-donate',103)=convert(date,'Date-of-donate',103)='1/1/2000'
    猜你喜欢
    • 2017-05-26
    • 1970-01-01
    • 1970-01-01
    • 2021-11-19
    • 2023-03-26
    • 2019-12-12
    • 1970-01-01
    • 1970-01-01
    • 2022-01-16
    相关资源
    最近更新 更多