错误(未来)转换为datetime

时间:2014-06-19 16:23:52

标签: sql date datetime type-conversion

这些数值需要转换为日期时间。它是出生日期,所以价值不可能在将来。我能以某种方式实施一条不接受出生日期的规则,其价值将超过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 - 对

3 个答案:

答案 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位数格式。

至于防止百人队员的插入?祝好运。根据您输入的数据,您绝对无法确定生日是在当代还是没有。无论您做什么,您的传入流中的数据都不足以拨打该电话。如果您可以控制采样的源编号,请更改格式。