DateTime數據類型保存問題(DateTime2)


DateTime And DateTime2

問題:

從 datetime2 數據類型到 datetime 數據類型的轉換產生一個超出范圍的值 

 

原因:

EF中model存在datetime類型的字段,如果不進行賦值,默認會生成0001-01-01 0:00:00的時間值,這個值屬於datetime2類型,存儲到數據庫會進行報錯。

 

解決方式:

1.將數據庫中的所有的datetime類型的字段的數據類型均改為datetiem2

2.將model中的datetime類型修改為datetime?

3.存儲的時候,將datetime類型的值進行賦值操作,=DateTime.Now;

 

 

注釋:

DateTime2是從SQL2008開始支持一個新的日期數據類型。
DateTime字段類型對應的時間格式是yyyy-MM-dd HH:mm:ss.fff,3個f,精確到1毫秒(ms),示例2014-12-0317:06:15.433。DateTime支持日期從1753年1月1日到9999年12月31日,時間部分的精確度是3.33毫秒,它需要8字節的存儲空間。

DateTime2字段類型對應的時間格式是yyyy-MM-dd HH:mm:ss.fffffff,7個f,精確到0.1微秒(μs),示例2014-12-0317:23:19.2880929。DateTime2則支持從0001年01月01日到9999年12月31日,時間部分的精度是100納秒,占用6到8字節的存儲空間,取決於存儲的精度。DateTime2(N)表示了秒鍾的精度,N=0到7,表示精確到秒鍾后的幾位數。DateTime(0)表示精確到秒;DateTime2(3)相當於原始的DateTime類型,但是能精確到1毫秒,占用7字節;DateTime2(7)則能達到最高的精度,100納秒。

如果用SQL的日期函數進行賦值,DateTime字段類型要用GETDATE(),DateTime2字段類型要用SYSDATETIME()。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM