【发布时间】: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