SQLlite查询在2个日期时间

时间:2015-05-04 20:04:04

标签: android sql sqlite datetime

我使用下面的查询从开始时间(从开始时间开始的2小时)到提到的结束时间之间从数据库获取数据,但此查询似乎不起作用。

REC_CONT_TIME列是YYYY-MM-DD HH:MM

格式的日期时间

查询是:

  

SELECT * FROM REC_CONTACT WHERE datetime('now')

     

BETWEEN

     

strftime('%Y-%m-%d%H:%M:%S',REC_CONT_TIME)

     

     

datetime(strftime('%Y-%m-%d%H:%M:%S',REC_CONT_TIME),'+ 120分钟')

开始时间: strftime('%Y-%m-%d%H:%M:%S',REC_CONT_TIME)

结束时间:日期时间(strftime('%Y-%m-%d%H:%M:%S',REC_CONT_TIME),'+ 120分钟')。 从开始时间开始增加120分钟。

2 个答案:

答案 0 :(得分:1)

如果您在日期时间(“现在”)功能中未包含“localtime”,则您将使用GMT时间。这很可能不是您的日期所在的时区,并且不会返回任何值,因为它不在您的2小时窗口中。

您可以看到此查询的不同之处:

select datetime('now'),datetime('now','localtime')

试试这个:

SELECT * 
FROM REC_CONTACT 
WHERE datetime('now','localtime')
    BETWEEN
        strftime('%Y-%m-%d %H:%M:%S',REC_CONT_TIME)
    AND
        datetime(strftime('%Y-%m-%d %H:%M:%S',REC_CONT_TIME),'+120 minutes')

答案 1 :(得分:0)

如果我理解,您正试图从表中获取日期值在startDate到endDate范围内的所有行。

假设startDate现在是,而endDate现在是120分钟,您可以使用此查询:

SELECT *
FROM REC_CONTACT
WHERE strftime('%s', REC_CONT_TIME )  
BETWEEN strftime('%s', 'now','localtime') 
AND strftime('%s', datetime(strftime('%Y-%m-%d%H:%M:%S','now','localtime'),'+120 minutes')) 

查看this fiddle

相关问题