2016-12-16 153 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_開始和結束日期,但只需要一個條件。 –

相關問題