在将.NET DateTime (默认(DateTime))转换为SqlDateTime时,我是否应该始终检查.NET日期是否在SqlDateTime.MinValue和SqlDateTime.MaxValue之间,或者有没有好的方法这样做。
发布于 2010-02-03 18:22:38
有没有可能日期实际上在这个范围之外?它来自用户输入吗?如果这两个问题中的任何一个的答案是肯定的,那么你应该始终检查-否则你的应用程序很容易出错。
您可以很容易地将日期格式化以包含在SQL语句中:
var sqlFormattedDate = myDateTime.Date.ToString("yyyy-MM-dd HH:mm:ss");
发布于 2010-02-03 22:13:23
如果您正在检查DBNULL,那么将SQL Datetime转换为.NET DateTime应该不是问题。但是,在将.NET DateTime转换为有效的DateTime时可能会遇到问题。
SQL Server不识别早于1753年1月1日的日期。那一年,英国采用了公历。通常,检查DateTime.MinValue就足够了,但如果您怀疑数据可能早于18世纪,则需要进行另一次检查或使用不同的数据类型。(我经常想知道博物馆在他们的数据库中使用什么)
没有必要检查最大日期,SQL Server和.NET DateTime的最大日期都是12/31/9999。这可能是一个有效的业务规则,但不会造成问题。
发布于 2010-02-05 19:01:57
另外,请记住,时间的分辨率是不同的。
http://msdn.microsoft.com/en-us/library/system.data.sqltypes.sqldatetime.aspx
SQL one为3.33ms,.net one为100 ns。
https://stackoverflow.com/questions/2191120
复制相似问题