· 8 years ago · Aug 29, 2018, 09:30 AM
1select * from table where timestamp BETWEEN '2018-01-10 00:00:00' AND '2018-01-11 23:59:59
2
3id timestamp product
41 10-1-2018:10:02:02 a
52 10-1-2018:10:02:03 b
63 11-1-2018:10:02:05 a
74 11-1-2018:10:02:09 b
85 11-1-2018:10:02:19 a
96 11-1-2018:10:02:23 b
10
11id timestamp product
121 10-1-2018:10:02:02 a
132 10-1-2018:10:02:03 b
145 11-1-2018:10:02:19 a
156 11-1-2018:10:02:23 b
16
17DROP TABLE IF EXISTS my_table;
18
19CREATE TABLE my_table
20(id SERIAL PRIMARY KEY
21,timestamp DATETIME NOT NULL
22,product CHAR(1) NOT NULL
23);
24
25INSERT INTO my_table VALUES
26(1,'2018-01-10:10:02:02','a'),
27(2,'2018-01-10:10:02:03','b'),
28(3,'2018-01-11:10:02:05','a'),
29(4,'2018-01-11:10:02:09','b'),
30(5,'2018-01-11:10:02:19','a'),
31(6,'2018-01-11:10:02:23','b');
32
33SELECT a.*
34 FROM my_table a
35 JOIN
36 ( SELECT product
37 , MAX(timestamp) timestamp
38 FROM my_table
39 GROUP
40 BY product
41 , DATE(timestamp)
42 ) b
43 ON b.product = a.product
44 AND b.timestamp = a.timestamp;
45+----+---------------------+---------+
46| id | timestamp | product |
47+----+---------------------+---------+
48| 1 | 2018-01-10 10:02:02 | a |
49| 2 | 2018-01-10 10:02:03 | b |
50| 5 | 2018-01-11 10:02:19 | a |
51| 6 | 2018-01-11 10:02:23 | b |
52+----+---------------------+---------+