在Microsoft SQL Server Management Studio中计算年龄
我这么做了,但结果给了我所有30岁和不到30岁的人的名字 这是数据库: 捐赠者身份证、名字、姓氏、出生日期、性别、捐赠日期 捐赠者电话捐赠者ID,电话号码 诊所ID、诊所名称、诊所位置 血型 献血日血液状态、献血日期 员工ID、姓名、姓氏、性别 我用了这个代码-哪里错了在Microsoft SQL Server Management Studio中计算年龄,sql,sql-server,Sql,Sql Server,我这么做了,但结果给了我所有30岁和不到30岁的人的名字 这是数据库: 捐赠者身份证、名字、姓氏、出生日期、性别、捐赠日期 捐赠者电话捐赠者ID,电话号码 诊所ID、诊所名称、诊所位置 血型 献血日血液状态、献血日期 员工ID、姓名、姓氏、性别 我用了这个代码-哪里错了 SELECT GETDATE () AS FirstName, FirstName, LastName, DATEADD(DD, 30, GETDATE()) AS [DateOfDonate- Dat
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日以来一直在捐赠的捐赠者的姓名。我用实际字段计算,然后用你的字段替换,结果造成了混乱。 请在下面使用
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 '
这将适用于您好的,DATEADD的第二个参数是一个整数。因此,在一个地方,你把30天加到今天,在另一个地方,你把-2000天加到今天,你包括了一个计算,而不是一个日期,1-1-2000的结果是-2000到今天。但我不知道你想做什么。最好的建议是从捐赠者表中给出一些示例数据,然后从这些示例数据中给出一些您想要的示例结果。还有,也许读一下这个?查找年龄在30岁以上且自2000年1月1日起捐赠的捐赠者的姓名。我想解决这个问题这个链接是关于KM的回答。我需要它作为SQLi中的声明来解决这个问题:找到年龄在30岁以上并且从2000年1月1日起捐赠的捐赠者的姓名。当天部分将给出一个非常大的数字。。。这不是OP所要求的…这意味着什么?捐赠日期>=convertdate,'Date-of-捐赠',103=convertdate,'Date-of-捐赠',103='1/1/2000'
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
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