.net 如何在SQLite中使用SQL语句插入和检索时间戳字段?

.net 如何在SQLite中使用SQL语句插入和检索时间戳字段?,.net,sqlite,delphi-prism,oxygene,.net,Sqlite,Delphi Prism,Oxygene,我可以将时间戳作为字符串插入到表中,但当我读出它时,程序会出现一个错误,说“字符串未被识别为有效的日期时间。” 下面是我如何将我的值插入表中 sqlstr := 'INSERT INTO ALARMS (ALARMTIME) VALUES ("'+DateTime.Now.ToString+'");'; cnn := new SQLiteConnection('Data Source=AlarmLog.s3db'); cnn.Open; var mycommand := new SQLiteCo

我可以将时间戳作为字符串插入到表中,但当我读出它时,程序会出现一个错误,说“字符串未被识别为有效的日期时间。”

下面是我如何将我的值插入表中

sqlstr := 'INSERT INTO ALARMS (ALARMTIME) VALUES ("'+DateTime.Now.ToString+'");';
cnn := new SQLiteConnection('Data Source=AlarmLog.s3db');
cnn.Open;
var mycommand := new SQLiteCommand(cnn);
mycommand.CommandText := sqlstr;
var info := mycommand.ExecuteNonQuery;
cnn.Close;
我是这样读出来的

    sqlstr := 'SELECT * from ALARMS';
    var dt := new DataTable;
    cnn := new SQLiteConnection('Data Source=AlarmLog.s3db');
    cnn.Open;
    var mycommand := new SQLiteCommand(cnn);
    mycommand.CommandText := sqlstr;
    var reader := mycommand.ExecuteReader;
    dt.Load(reader); <---------------------Here is where I am getting the error, "String was not recognized as a valid DateTime."
    reader.Close;
    cnn.Close;
sqlstr:='SELECT*from ALARMS';
var dt:=新数据表;
cnn:=新的SQLiteConnection('Data Source=AlarmLog.s3db');
美国有线电视新闻网开放;
var mycommand:=新的SQLiteCommand(cnn);
mycommand.CommandText:=sqlstr;
变量读取器:=mycommand.ExecuteReader;

dt.负载(读卡器) 传递SQLite可以识别的日期格式,如:

DateTime.Now.ToString("yyyy-MM-ddTHH:mm")

更好的方法是使用参数,如:

sqlstr := 'INSERT INTO ALARMS (ALARMTIME) VALUES ($dt);';
...
mycommand.Parameters.AddWithValue("$dt", DateTime.Now);

@Andomar,所以基本上这意味着您必须将datetime转换为字符串并将其传递给您的表。对于检索,您需要将其读取为字符串并转换为实际的datetime值。是的,如果您选择的格式是SQLite和.NET都能理解的,当然会有所帮助
yyyy-MM-ddTHH:MM:ss
是一种通用格式。