是否可以在SQL语句中将列从字符串转换为日期时间类型?

时间:2012-08-03 15:28:46

标签: sql sqlite datetime type-conversion

我需要使用以下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并没有抱怨语法。

1 个答案:

答案 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中的值格式正确。