这些数值需要转换为日期时间。它是出生日期,所以价值不可能在将来。我能以某种方式实施一条不接受出生日期的规则,其价值将超过100年吗?
201246-1324 040210-6387 111257-0647 040210-6387
结果:
2046-12-20 00:00:00.000 - 错误 2010-02-04 00:00:00.000 - 对 1957-12-11 00:00:00.000 - 对 2010-02-04 00:00:00.000 - 对
答案 0 :(得分:0)
我相信,你可以在if语句中使用datediff函数 基本上,如果比较的两个日期之间的时间大于100年,则不要插入记录 http://www.w3schools.com/sql/func_datediff.asp
答案 1 :(得分:0)
暂时更改您的截止日期,因为您正在使用过去一直在使用的DOB。
sp_configure 'two digit year cutoff', 2015
reconfigure
然后使用标准日期和年份< 100。
答案 2 :(得分:0)
首先,通过将当前世纪添加到值并检查当前年份,可以防止使用2位数年份的未来日期。如果更大,减去一个世纪,否则直接取值。所以......
[YearCol] + round(year(getdate()),-2) -
CASE
WHEN [YearCol] + round(year(getdate()),-2) > year(getdate()) THEN 100
ELSE 0
END
作为旁注,您可以游说数据源以提供年份的4位数格式。
至于防止百人队员的插入?祝好运。根据您输入的数据,您绝对无法确定生日是在当代还是没有。无论您做什么,您的传入流中的数据都不足以拨打该电话。如果您可以控制采样的源编号,请更改格式。