如何比较时间戳date与MySQL中的仅限date参数?

在SQL语句中,如何将保存为TIMESTAMP的date与YYYY-MM-DD格式的date进行比较?

例如: SELECT * FROM table WHERE timestamp = '2012-05-05'

我想要这个查询返回在指定的日子里有时间戳的所有行,但是它只返回具有午夜时间戳的行。

谢谢

您可以使用DATE()函数来提取时间戳的date部分:

 SELECT * FROM table WHERE DATE(timestamp) = '2012-05-05' 

但是,如果您在时间戳列上有一个索引,则会更快,因为它可以使用索引:

 SELECT * FROM table WHERE timestamp BETWEEN '2012-05-05 00:00:00' AND '2012-05-05 23:59:59' 
  WHERE cast(timestamp as date) = '2012-05-05' 
 SELECT * FROM table WHERE timestamp >= '2012-05-05 00:00:00' AND timestamp <= '2012-05-05 23:59:59' 

使用MYSQL的转换function:

 SELECT * FROM table WHERE DATE(timestamp) = '2012-05-05' 

这应该工作

 Use SELECT * FROM table WHERE DATE(2012-05-05 00:00:00) = '2012-05-05' 

如果你正在使用SQL参数来运行查询,那么这将是有帮助的

 SELECT * FROM table WHERE timestamp between concat(date(?), ' ', '00:00:00') and concat(date(?), ' ', '23:59:59') 

当我读到你的问题时,我以为你在Oracle DB上,直到看到标签“MySQL”。 无论如何,在这里与Oracle合作的人是这样的:

 SELECT * FROM table where timestamp = to_timestamp('21.08.2017 09:31:57', 'dd-mm-yyyy hh24:mi:ss');