sql用于获取相同格式的两个日期的总差异

时间:2012-07-26 11:06:02

标签: sql

我想在sql中编写一个查询,用于查找一个月和一年中人的年龄..... lik3 年龄:'65岁/ 7Month / 2天

我有一张表格,包括雇员的姓名和出生日期

我可以使用datediff查询找到年,月或日的年龄,但不知道如何为所有

的混合编写
DATEDIFF(day,Column_1,DateNow())

3 个答案:

答案 0 :(得分:2)

试试这个:

CREATE TABLE emp(ename varchar(100),DOB date,  Age varchar(100))
INSERT INTO emp
VALUES('d','06/02/2011',NULL)--,('b','07/10/1947',NULL),('c','12/21/1982',NULL)



;WITH CTE(ename,DOB,years,months,days) 
AS 
(
SELECT 
    ename,DOB,DATEDIFF(yy,DOB,getdate()),DATEDIFF(mm,DOB,getdate()),DATEDIFF(dd,DOB,getdate()) 
FROM 
    emp
)
SELECT 
    ename,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

答案 1 :(得分:0)

在这里试试http://social.msdn.microsoft.com/Forums/en/transactsql/thread/399a7e87-bc78-47a5-8cc2-2d2436886fd7谷歌是你的朋友“从日期开始的ms sql”

答案 2 :(得分:0)