1. 程式人生 > >從 datetime2 資料型別到 datetime 資料型別的轉換產生一個超出範圍的值

從 datetime2 資料型別到 datetime 資料型別的轉換產生一個超出範圍的值

問題描述:在C#程式中將獲取到的時間,存入到資料庫,於是就遇到了這個問題。

問題分析:datetime和datetime2都是時間格式,只不過在C#的EF框架中,預設的是datetime2型別,它取值範圍是“0001-01-01 到 9999-12-31”,而datetime範圍是從:”1753 年 1 月 1 日到 9999 年 12 月 31 日“。如果在儲存之前不給賦值的話,datetime2型別預設為“0001-01-01”,超出了datetime的範圍自然要報錯的。

同時,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位元組的儲存空間,取決於儲存的精度。

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位元組的儲存空間。

這同樣也會產生超出範圍的異常。

解決辦法:

1、在定義DateTime的時候,採用可空型別。DateTime?

2、在每處需要儲存時間的地方,都要給他賦值。

3、將資料庫中的時間格式設為datatime2.