【问题标题】:select rows by datetime in sqlite在sqlite中按日期时间选择行
【发布时间】:2016-02-18 12:10:43
【问题描述】:

我正在尝试使用 sqlite 在 c# 中选择开始日期和结束日期之间的行。

我的日期格式如下:

2015-05-16T17:22:04.920+02:00

这应该是 sqlite 的有效格式(参考:http://www.sqlite.org/lang_datefunc.html

我正在尝试像这样选择行:

string CmdString = "SELECT * FROM " + tablename +  "WHERE DATETIME(timekey) >= DATETIME('2015-05-16T17:22:04.920+02:00') AND DATETIME(timekey) <= DATETIME('2015-05-16T17:24:04.920+02:00')";
SQLiteCommand cmd = new SQLiteCommand(CmdString, con);
SQLiteDataAdapter sda = new SQLiteDataAdapter(cmd);
DataTable MatchDt = new DataTable();

sda.Fill(MatchDt);

我得到的错误是:

SQLiteException: SQL logic error or missing database

我做错了什么?

【问题讨论】:

  • WHERE 前缺少一个空格。

标签: c# sqlite


【解决方案1】:

您在 where 之前缺少一个空格字符:

string CmdString = "SELECT * FROM " + tablename +  " WHERE DATETIME(timekey) >= DATETIME('2015-05-16T17:22:04.920+02:00') AND DATETIME(timekey) <= DATETIME('2015-05-16T17:24:04.920+02:00')";

我建议使用BETWEEN 运算符:

string CmdString = "SELECT * FROM " + tablename +  " WHERE DATETIME(timekey) BETWEEN DATETIME('2015-05-16T17:22:04.920+02:00') AND DATETIME('2015-05-16T17:24:04.920+02:00')";

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-09-21
    • 1970-01-01
    • 2021-03-27
    • 1970-01-01
    • 1970-01-01
    • 2014-05-28
    • 2011-02-18
    • 1970-01-01
    相关资源
    最近更新 更多