我需要使用以下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并没有抱怨语法。
答案 0 :(得分:4)
严格来说,SQLite没有datetime types for its columns:
SQLite没有为存储日期留出的存储类 和/或时间。相反,SQLite的内置日期和时间函数 能够将日期和时间存储为TEXT,REAL或INTEGER 值
这里的问题是你使用条件的字符串不是有效的日期/时间,所以它被视为null:
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
中的值格式正确。