sql - 如何在 SQL Server 中以年月日格式显示确切的年龄

标签 sql sql-server-2008 sql-server-2005

我的查询被困住了。我有一个名为 Patient 的表。在此表中,一列包含患者DOB。实际上我想显示患者的确切年龄。

例如:

PatName   DOB (MM/dd/yyyy)   Age
a         06/02/1947         65 Years 1 Month/s 3 Days 
b         07/10/1947         64 Years 11 Month/s 25 Days 
c         -----------        -----------------------      

我想显示上述格式的年龄。

我已经用谷歌搜索过这个问题,但没有人提供帮助。

如果您对此有任何疑问,请发布。

谢谢

最佳答案

您好,请检查下面的查询。

--DROP TABLE patient
CREATE TABLE patient(PatName varchar(100),DOB date,  Age varchar(100))
INSERT INTO patient
VALUES('a','06/02/1947',NULL),('b','07/10/1947',NULL),('c','12/21/1982',NULL)

;WITH CTE(PatName,DOB,years,months,days) AS 
(SELECT PatName,DOB,DATEDIFF(yy,DOB,getdate()),DATEDIFF(mm,DOB,getdate()),DATEDIFF(dd,DOB,getdate()) FROM patient)

--SELECT * FROM CTE

SELECT PatName,DOB,
      CAST(months/12 as varchar(5))+' Years'+CAST((months % 12) as varchar(5))+' month/s '+CAST(CASE WHEN DATEADD(MM,(months % 12),DATEADD(YY,(months/12),DOB)) <= GETDATE() then DATEDIFF(dd,DATEADD(MM,(months % 12),DATEADD(YY,(months/12),DOB)),GETDATE()) ELSE DAY(getdate()) END as varchar(5))+' days' as Age

FROM CTE

关于sql - 如何在 SQL Server 中以年月日格式显示确切的年龄,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11345041/

相关文章:

sql - 在SQL 2005中,如果自动编号列的编号用完了怎么办?

sql-server - SQL Server 2005 非聚集索引死锁

php - 为什么我的 SQL 查询不起作用

mysql - SQL 查询在加入时显示特定用户的文档

sql - 是否可以在不使用存储过程或函数的情况下生成 X # 行?

用于标记多行而不是一行的 SQL Server 查询

sql-server - nvarchar(max) 与 NText

mysql - 为上个月的总和引入一个新列

sql - Informix 组(按别名)

sql - 如何减少选择查询的执行时间