我遇到了以下问题:
我有一个带有以下列的sqlite3数据库: id,moisty,temp1,temp2,date,time
日期格式为DD.MM.YYYY
时间格式为HH:MM:SS
现在我想获取过去24小时的内容。 因此我得到了一个sql语句,如:
SELECT *FROM messwerte
WHERE date BETWEEN date('now','-1 day') AND date('now')
但我必须将该声明与我的时间栏的内容联系起来。
对于我的问题,哪个是正确的sql语句?
答案 0 :(得分:1)
由于您的日期和时间值似乎是SQLite根据documentation无法识别的格式,我认为您必须通过解析日期和时间列来创建有效的日期时间,如下所示:
SELECT *
FROM messwerte
WHERE datetime(
substr(date,7,4)
|| '-'
|| substr(date,4,2)
|| '-'
|| substr(date,1,2)
|| ' '
|| time
) BETWEEN datetime('now','-1 day') AND datetime('now');
where子句中使用的日期时间函数的格式只是为了清晰起见,避免换行而不需要。
旁注:如果您有权访问并可以更改表的架构以及如何插入数据,您可能需要考虑仅在本机中存储日期和时间(iso 8601兼容) SQLite用于日期的格式,然后您不必使用函数来处理日期。