我想在将其作为参数添加到我的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
这是最好的方法吗?有没有替代硬编码这些最小值和最大值?
答案 0 :(得分:19)
SqlDateTime.MinValue和SqlDateTime.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.MaxValue
和DateTime.MinValue
更能满足您的需求,因为DateTime.MinValue
不是1/1/1753而是1/1/0001。
答案 2 :(得分:-5)
我认为真正的问题是为什么您的用户输入此范围之外的日期?您验证它的代码很好,但是我建议用户可以输入虚假日期,这是一个更大的问题。