【发布时间】:2017-07-10 23:51:31
【问题描述】:
我能够创建一个 INSERT 触发器,该触发器从一个表中获取出生日期并完美地转换为等效表
SELECT @DateOfBirth = CAST(INSERTED.DOBIRTH AS DATETIME)
FROM INSERTED
但是现在,我正在编写一个 UPDATE 触发器,并且我想更新 ORIGINAL 表;如何将该出生日期转换回 7 位整数值?
【问题讨论】:
-
你犯了触发器的第一个错误:
INSERTED可以有很多行。您刚刚在代码中选择了任意一行。反正。请指出 7 位数值应采用何种格式。您要排除日期的哪一部分。我们应该猜吗? (您需要 8 位数字来描述日期) -
1968010 是一个出生日期。
-
那是一月零日吗?
-
假设这是 SQL Server,它甚至不会强制转换为日期时间,即使您正确执行并使用
CONVERT。请解释该数据的格式是什么?通过检查,它似乎缺少数据。如果 1968 年是年,你如何用三位数来描述一个两位数的月份和一个数位的日期? -
请阅读this,了解一些改进问题的技巧。
标签: sql sql-server tsql triggers