1

我需要使用以下 SQL 语句查询 SQLite 数据库表。

SELECT * 
FROM Alarms 
WHERE ALARMSTATE IN (0,1,2) 
  AND ALARMPRIORITY IN (0,1,2,3,4) 
  AND ALARMGROUP IN (0,1,2,3,4,5,6,7) 
  AND DateTime(ALARMTIME) BETWEEN datetime("2012-08-02 00:00:00") 
                    AND datetime("2012-08-03 00:00:00") 
ORDER BY ALARMTIME DESC

ALARMTIME 是 TEXT 数据类型。

ALARMTIME 在 datagridview 中显示如下“08/03/2012 11:52 AM”。您可以使用该格式进行检查,例如 DateTime(ALARMTIME) 吗?

此 SQL 语句的唯一问题是它总是返回零数据集或记录。但是,SQLite 并没有抱怨语法。

4

1 回答 1

4

严格来说,SQLite 的列没有日期时间类型

SQLite 没有为存储日期和/或时间预留存储类。相反,SQLite 的内置日期和时间函数能够将日期和时间存储为 TEXT、REAL 或 INTEGER 值

这里的问题是您使用的字符串条件不是有效的日期/时间,因此它被视为空:

sqlite> SELECT datetime("2012-08-3 00:00:00");

sqlite> SELECT datetime("2012-08-03 00:00:00");
2012-08-03 00:00:00

(注意2012-08-03而不是2012-08-3。)

此外,请确保您的值的ALARMTIME格式也正确。

于 2012-08-03T15:36:54.533 回答