如何比较时间戳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');