.net与sqlite中datetime类型的操作。
由于sqlite中Sqlite不是用的什么全球的UTC时间,而是用的国际标准ISO 8601标准,所以写代码的时候如果直接写下面的代码
string sql=”insert into [table] (date_time) values(‘” + date_time.ToString() + “‘”;
执行如上命令.插入没有报告错误.
但执行
string sql=”select * from [table];
…..
IDataReader dr=cmd.ExecuteReader();
…
object obj=dr["data_time"];//在这里出错了,说是无法转换为DataTime格式,字符串不正确
解决方案:
在日期保存到Sqlite数据库时转换一个类型,比如:string _now = System.DateTime.Now.ToString(“s”);
也就是说在.ToString()方法中加一个s,转换成 iso 8601标准字符串格式,即可解决日期读取错误的问题。
另外每次都要这样转换很麻烦,特别是很多时候datetime列我们不操作使其为NULL(NULL被认为是“1899-12-30 0:00:00”),我们可以在建表的时候将这列设置为非空,并设置初始值:1899-12-30T0:00:00。这样在我们不操作这列的时候sqlite自己的默认值我们也能认出来了。