验证日期在SqlDbType.DateTime范围内

时间:2010-11-02 18:56:27

标签: c# sql-server datetime ado.net sqldbtype

我想在将其作为参数添加到我的SqlCommand实例之前验证System.DateTime值。

SqlDbType枚举的MSDN文档说:

日期和时间数据,范围从1753年1月1日到9999年12月31日,准确度为3.33毫秒。

要验证该值,我正在使用

public readonly DateTime SqlDateTimeMin = new DateTime(1753, 1, 1);
public readonly DateTime SqlDateTimeMax = new DateTime(9999, 12, 31);

if (value < SqlDateTimeMin || value > SqlDateTimeMax)
    // Validation check fails
else
    // Validation check succeeds

这是最好的方法吗?有没有替代硬编码这些最小值和最大值?

3 个答案:

答案 0 :(得分:19)

SqlDateTime.MinValueSqlDateTime.MaxValue呢?

注意:这些是 SQL 类型min / max而不是.net类型,如前2个答案: - )

答案 1 :(得分:0)

SqlDateTime.MaxValue = 12/31/9999
SqlDateTime.MinValue = 1/1/1753

您的代码将会显示为:

if (value < SqlDateTime.MinValue || value > SqlDateTime.MaxValue)

我认为这比DateTime.MaxValueDateTime.MinValue更能满足您的需求,因为DateTime.MinValue不是1/1/1753而是1/1/0001。

答案 2 :(得分:-5)

我认为真正的问题是为什么您的用户输入此范围之外的日期?您验证它的代码很好,但是我建议用户可以输入虚假日期,这是一个更大的问题。