2013-10-10 59 views
1

我想從C#應用程序在我的表中插入當前日期,我這樣做的方式如下:SQLite的命令插入當前日期時間到C#不工作

sqlite_cmd.CommandText = "INSERT INTO tablename (column1,creation_date) VALUES ('abcd_" + (id) + "',CURRENT_TIMESTAMP);"; 
       sqlite_cmd.ExecuteNonQuery(); 

但是,這將引發錯誤,指出CURRENT_TIMESTAMP不是一個有效的字段。 我再次檢查上面的查詢使用SQLite的經理插件爲Firefox和它似乎工作正常。

P.S. - 上述查詢中的id是一個由c#應用程序設置的int變量。

+0

嘗試strftime('%s','now')而不是current_timestamp。在SqlLite strftime得到的UNIX時間戳 –

回答

2

CURRENT_TIMESTAMP僅在列定義中有效。

作爲表達式,您可以使用DATETIME('NOW')。嘗試:

sqlite_cmd.CommandText = "INSERT INTO tablename (column1,creation_date) VALUES ('abcd_" + (id) + "', DATETIME('NOW'));"; 
+0

感謝兄弟這對我工作正常........ – Kratos

+0

@ LS_dev如果你需要根據日期時間搜索你做什麼然後如果你插入日期時間爲DATETIME('現在' )? – Rezoan

+0

SQLite沒有日期/時間數據類型。但具有處理某些字符串格式的內置函數(檢查[時間字符串](http://www.sqlite.org/lang_datefunc.html))。 «datetime()函數返回「YYYY-MM-DD HH:MM:SS」»。因此,您可以使用'creation_date> ='2013-10-10''來查找上面的所有日期,'DATE(create_date)BETWEEN'2013-09-01'和'2013-09-30''查找日期那些日子,... –

2

嘗試使用這樣的:

using(SQLiteCommand cmd = new SQLiteCommand(yourSqliteConnection)) 
{ 
cmd.CommandText = "INSERT INTO tablename (column1,creation_date) VALUES (?,?)"; 
cmd.Command.Parameters.AddWithValue("@p1",string.Format("abcd_{0}",id)); 
cmd.Command.Parameters.AddWithValue("@p2",DateTime.Now.ToString("s")); 
cmd.CommandType= CommmandType.Text; 

cmd.ExecuteNonQuery(); 
} 

DateTime.Now.ToString( 「S」)方式轉換這個日期爲XSD格式。 SQLite自身沒有DateTime格式。所以你需要的一切就是把它轉換成固定的TEXT格式,然後根據這種格式插入和選擇文件。

XSD是DateTime的固定格式。它不會更改如果DateTime更改格式。

記住,當你需要做一個基於DateTime的搜索(SELECT)命令時,在SQLite中進行任何操作之前,嘗試按照上圖所示進行轉換。