我正在使用以下查询在开始时间之间从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'))
看这个小提琴