过去24小时的Sql语句

时间:2014-11-07 16:20:41

标签: sql sqlite

我遇到了以下问题:

我有一个带有以下列的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语句?

1 个答案:

答案 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子句中使用的日期时间函数的格式只是为了清晰起见,避免换行而不需要。

Sample SQL Fiddle

旁注:如果您有权访问并可以更改表的架构以及如何插入数据,您可能需要考虑仅在本机中存储日期和时间(iso 8601兼容) SQLite用于日期的格式,然后您不必使用函数来处理日期。