过滤当前日期的记录

时间:2019-02-05 18:07:46

标签: mysql sql

我陷入了数据库查询。我有一个表,其中有两列,一列用于日期,另一列用于时间。

我想用当前日期时间过滤记录,这意味着如果仅那些记录将显示那些包含大于或等于当前datetime的日期和时间值的记录。 能否请您指导编写此sql查询? 谢谢

3 个答案:

答案 0 :(得分:3)

您可以使用:

where date > curdate() or
      (date = curdate() and time > curtime())

答案 1 :(得分:0)

另一个选择是简单地连接日期和时间。在MySQL中,这是一种生成日期的简单明了的方法:

where CONCAT(date, ' ', time) > NOW()

NB:如Juan Carlos Oropeza所评论,此表达式不允许您使用列datetime(如果有)上的现有索引。如果您处理的大量数据和/或性能对您至关重要,那么该解决方案的扩展性可能不及Gordon Linoff的解决方案。

答案 2 :(得分:0)

create table Test(id integer, title varchar(100), date DATE , time TIME);

insert into Test(id, title, date, time) values(1, "Date one", '2019-01-01', '01:20:00');
insert into Test(id, title, date, time) values(2, "Date two", '2019-01-02', '11:40:00');
insert into Test(id, title, date, time) values(3, "Date three", '2019-01-03', '23:56:00');
insert into Test(id, title, date, time) values(4, "Date foure", '2019-01-04', '12:20:00');
insert into Test(id, title, date, time) values(5, "Date five", '2019-01-05', '01:20:00');
insert into Test(id, title, date, time) values(6, "Date six", '2019-01-12', '15:47:00');
insert into Test(id, title, date, time) values(7, "Date seven", '2019-01-21', '10:20:00');
insert into Test(id, title, date, time) values(8, "Date eight", '2019-02-01', '01:20:00');


select * from Test WHERE date > '2019-01-04' OR (date = '2019-01-04' AND time >= '10:00:00');