我使用下面的查询从开始时间(从开始时间开始的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分钟。
答案 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'))