SQLLITE查询以在2个日期时间之间获取数据



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

列rec_cont_time是dateTime的格式 YYYY-MM-DD HH:MM

查询是:

从rec_contact中选择 * datetime('现在')

之间

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)

结束时间: dateTime(strftime('%y-%m-%d%h:%m:%s',rec_cont_time),' 120分钟')。从开始时间开始添加120分钟。

如果您在dateTime('Now')函数上不包含'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')

如果我理解,您正在尝试从表中的所有行中获取从开始日期到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')) 

看这个小提琴

最新更新