使用间隔在两个日期之间获取数据的条件查询

时间:2017-02-03 10:56:28

标签: mysql date max intervals

SELECT * FROM mytable DATE_SUB之间的TrackDate(" 2015-01-12 13:47:30",INTERVAL 7 DAY)和" 2015-01 -12 13:47:30"

mytable的

**id-----------|-----keyword(varchar)----|--------trackdate(timestamp)**

1------------|--------a------------------------|-------2015-01-12 13:47:02
15------------|------ *NULL* ----------------------|-------2015-01-12 12:47:02

2------------|--------b------------------------|-------2015-01-12 10:47:02

3------------|--------c------------------------|--------2015-01-12 1:47:02

4------------|--------d------------------------|-------2015-01-10 13:47:02

5------------|--------e------------------------|-------2015-01-10 10:47:02

6------------|--------f------------------------|-------2015-01-10 1:47:02

7------------|--------g------------------------|--------2015-01-9 13:47:02

8------------|--------h------------------------|--------2015-01-9 10:47:02

9------------|--------i------------------------|--------2015-01-9 1:47:02

10------------|--------j-----------------------|--------2015-01-6 13:47:02

11------------|--------k-----------------------|--------2015-01-5 10:47:02

12------------|--------l-----------------------|--------2015-01-2 1:47:02

我的输出应为:

1------------|--------a------------------------|-------2015-01-12 13:47:02

4------------|--------d------------------------|-------2015-01-10 13:47:02

7------------|--------g------------------------|--------2015-01-9 13:47:02

10------------|--------j-----------------------|--------2015-01-6 13:47:02

但我得到的是2015-01-12和2015-01-6之间的所有数据。 我想从输出中消除重复的日期记录,只需获取那些重复日期中最大的日期记录(就像我在2015-01-12中删除id = 2,3并显示id 1)。

1 个答案:

答案 0 :(得分:0)

使用派生表和子查询

select * from mytable where Trackdate IN (
select max(date) from
(
SELECT * FROM mytable WHERE TrackDate between DATE_SUB("2015-01-12 13:47:30", INTERVAL 7 DAY) AND "2015-01- 13:47:30"
)tmp
group by date(trackdate)
)