sqlite的扔“字符串未被识别为有效的DateTime”(sqlite throwing a “S

2019-06-26 04:54发布

我玩弄SQLite和不断尝试读回一些测试数据时,得到一个错误。 例如,我创建了一个简单分贝与单个表和某些列,并与一些测试数据填充它,如下所示。

sqlite> .schema
CREATE TABLE "shows"(id integer primary key asc autoincrement, showName TEXT, guest TEXT, dateAired date, dateWatched date);

sqlite> select * from shows;
6|test show|test guest 1|2012.05.01|2012.07.10
7|test show|test guest 2|2012.05.02|2012.07.10
8|test show|test guest 4|2012.05.04|2012.07.10

我使用的可用System.Data.Sqlite库在这里 ,但它不断给我一个错误尝试读取日期列。 我试图把日期在DD-MM-yyyy格式,但仍得到一个错误说“字符串未被识别为有效的日期时间。” 我曾尝试使用DateTime.Parse或强制转换为datetime或刚的ToString()'至来看看会发生什么,但我不断收到同样的错误。 我可以阅读文本字段罚款,但不能读取日期字段。

我的C#代码剪断下面给出

var sqliteConn = new SQLiteConnection("Data Source=data/shows.db;Version=3;New=False;Compress=True");
sqliteConn.Open();
SQLiteCommand cmd = new SQLiteCommand(sqliteConn);
cmd.CommandText = "select * from shows";

SQLiteDataReader reader = cmd.ExecuteReader( );
while (reader.Read( ))
    {
    var showName = reader["showName"];
    // This is where it keeps giving me an error.
    // I have tried various things such as DateTime.Parse
    var airedDate = DateTime.ParseExact("yyyy.MM.dd", reader["dateAired"].ToString(), new CultureInfo("en-AU"));
     }
reader.Close( );

任何帮助将不胜感激。

问候,

Answer 1:

基于在讨论这个线程 ,我决定建立我的“datetimeformat”参数和“字符串未被识别为有效的日期时间”连接字符串问题就解决了。

我的例子连接字符串:

source=<source to db file>;version=3;new=False;datetimeformat=CurrentCulture

此功能是在1.0.87.0版本发布于2013年7月8日(参见发行说明 )



Answer 2:

此线程可能是有点老,但我遇到了同样的问题,找到了一个“解决方案”。

看来,System.Data.SQLite不处理DateTime正确秒。 我试图DateTime.ParseExact和我的数据库(MM / DD / YYYY),得到的格式,但我注意到它时,打电话只是抛出一个错误ToString()DataReader的日期列。 这似乎很奇怪,因为我并没有试图把它放入一个Date ,但有它读出来作为一个String

正因为如此,我又回到了我从数据库调用视图和包裹我所有的日期在CAST as nvarchar(10) 通过这种方式,数据库会返回一个字符串,而不是日期。 现在, DateTime.Parse工作就好了!

我将使用视图中的一个触发拉弦/日期回,插入/更新基础表,因此具有所有转换发生在数据库中,而不是System.Data.SQLite。

有System.Data.SQLite的新版本即将到来的某个时候在2012年12月,我希望这是写给!



Answer 3:

select strftime('%m/%d/%Y',substr(colName,0,20)) from tablename

这将工作,我已经测试了这一点,因为建在sqlite的职能转换字符串日期时间格式



Answer 4:

错误“字符串未被识别为有效的DateTime。”

您的系统日期时间格式更改为你的数据库FILD日期时间格式。

我希望它帮你....



文章来源: sqlite throwing a “String not recognized as a valid datetime”