2015-05-04 71 views
0

我正在使用下面的查询从开始时间(这是从开始时间2小时)和结束时间提到的数据库中获取数据,但此查询似乎不工作。SQLlite查询获取2之间的数据日期时间

列REC_CONT_TIME是日期时间,格式为YYYY-MM-DD HH:MM

查询是:

SELECT * FROM REC_CONTACT WHERE日期时间( '现在')

BETWEEN

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

AND

日期时间(的strftime( '%Y-%间 - %d%H:%M:%S',REC_CONT_TIME), '+120分钟')

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

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

+0

为什么不格式化的Java代码开始日期时间/结束日期时间,并将其作为参数传递? – Loc

+0

@Loc Ha你可以添加更多的细节..格式如何和什么? – Psypher

+0

其他问题是:你确定datetime('now')是否返回YYYY-MM-DD HH:MM格式? – Loc

回答

1

如果不包括“本地时间在您的日期时间( 'now')函数您将使用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') 
+0

谢谢。有效。这是问题所在。 – Psypher

0

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

假设起始日期是从现在到结束日期为NOW + 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

相关问题