SQL Server触发器CAST功能

时间:2017-07-10 23:51:32

标签: sql sql-server tsql triggers

我能够创建一个INSERT触发器,从一个表中获取出生日期并完美转换为等效表

SELECT @DateOfBirth = CAST(INSERTED.DOBIRTH AS DATETIME)
FROM INSERTED

但是现在,我正在写一个UPDATE触发器,我想更新ORIGINAL表;如何将该出生日期转换为7位整数值?

2 个答案:

答案 0 :(得分:0)

我不知道7位整数是什么。您可以使用以下方法将其转换为整数:

select convert(int, format(dob, 'yyyyMMdd'))

或者,如果您愿意:

select  year(dob) * 10000 + month(dob) * 100 + day(dob)

答案 1 :(得分:0)

7位数日期格式为YYYYDDD,即年份的年份和日期(1-365 [6])。 这是一种方法:

SELECT CAST(YEAR(@DateOfBirth) AS varchar) + 
    RIGHT('000' + 
        CAST(DATEDIFF(DAY, CAST(YEAR(@DateOfBirth) AS varchar) + '-01-01', @DateOfBirth)+1 AS varchar)
        , 3)

我将年份作为日期的一部分,并连接自年初以来的天数。在 100 之前的几天里,我还用左侧填充了0。

所以 2017-01-01 成为 2017001 2017-12-31 成为 2017365