2013-10-10 25 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中进行任何操作之前,尝试按照上图所示进行转换。