2016-12-16 105 views
2

所以我只是在表中有start_time,end_timeduration列。我想查询两个日期之间的数据。 (START_TIME和END_TIME是划时代的毫秒时间)两个日期之间的查询记录持续时间

因此,例如日期是2016年12月5日2016年12月8日。所以,为了这个,我还需要包括开始于2016年12月4日2016年12月5日之间结束并开始对2016年12月8日和2016-12-结束记录09。以及这些日期之间的所有记录。

我无法想出将查询确切数据的WHERE子句的组合。

一部分我能得到的是这样的:

SELECT * FROM my_table 
    WHERE 
     date(datetime(start_time/1000, 'unixepoch', 'localtime')) >= '2016-12-05' 
    AND 
     date(datetime(start_time/1000, 'unixepoch', 'localtime')) <= '2012-12-08' 

但是,这将不包括所有的记录。

回答

2

你的逻辑似乎意味着如果开始或结束落在范围内,那么它应该被视为匹配。如果是的话,那么下面的查询应该工作:

SELECT * 
FROM my_table 
WHERE 
(
    date(datetime(start_time/1000, 'unixepoch', 'localtime')) >= '2016-12-05' AND 
    date(datetime(start_time/1000, 'unixepoch', 'localtime')) <= '2012-12-08' 
) OR 
(
    date(datetime(end_time/1000, 'unixepoch', 'localtime')) >= '2016-12-05' AND 
    date(datetime(end_time/1000, 'unixepoch', 'localtime')) <= '2012-12-08' 
) 
+0

看起来这将包括所有2个指定的日期 – kirtan403

+0

之间这什么我想要的记录。我只是检查了这一点 – kirtan403

+0

@ kirtan403逻辑包括日期之间。这些日期在范围内有_both_开始和结束日期,但只需要一个条件。 –

相关问题