遇到的問題:
使用SQLite3.0時,插入的時間(DateTime)字段的值總是顯示爲1899-12-30,使用可視化工具編寫sql語句爲時間字段賦值爲datetime('now')也還是顯示1899-12-30。
建表語句:
Create table WordTable (id integer PRIMARY KEY autoincrement , word TEXT , updatedate datetime )
原來失敗的代碼片段:
SQLiteConnection dbConnection = new SQLiteConnection(@"Data Source=D:\\dbFile.db;Version=3;");
dbConnection.Open();
string strInsertSql = "insert into WordTable (id,word,updatedate) values (null,@word,@updatedate)";
SQLiteCommand command = new SQLiteCommand(strInsertSql, dbConnection);
command.Parameters.Add(new SQLiteParameter("@word", DbType.String));
command.Parameters.Add(new SQLiteParameter("@updatedate", DbType.DateTime));
command.Parameters[0].Value = "測試";
command.Parameters[1].Value = DateTime.Now;
command.ExecuteNonQuery();
在網上查找解決方案,有人說時間需要使用“2017-08-27T17:00:00”這樣的格式,或者DateTime.Now.toString("s"),但是這兩者嘗試後都沒有成功。又看到有人說列需要使用SmallDateTime類型。使用可視化工具修改表格列的類型,修改時間成功。不過似乎這個字段支持的時間範圍是1900-2079年,精確到分。在修改代碼時發現DbType中還有一個DateTime2枚舉類型,將原代碼中DateTime改爲DateTime2後再測試,插入和修改時間成功。
MSDN中描述DateTime2爲:日期和時間數據。日期值範圍從公元 1 年 1 月 1 日到公元 9999 年 12 月 31 日。時間值範圍從 00:00:00 到 23:59:59.9999999,精度爲100 毫微秒