Php 选择存储为Unix时间戳的日期,并与给定的Unix时间戳进行比较

Php 选择存储为Unix时间戳的日期,并与给定的Unix时间戳进行比较,php,mysqli,Php,Mysqli,我在SQL特定场景上停留了几天。情况如下: 我有一个表,我们称之为traffic,它有两列->日期和“车辆”,还有更多,但这两列是我需要匹配的 日期列存储为Unix时间戳。现在只需比较从php from time函数获取的当前日期就很容易了,但是这里的技巧是,其中一些日期也附加了时间 例如,如果运行strotime13-02-2017 13:00和strotime13-02-2017,您将得到两个不同的结果。基本上我只关心匹配日期而不是时间 因此,我需要某种方法从数据库中选择与当前Unix时间戳

我在SQL特定场景上停留了几天。情况如下:

我有一个表,我们称之为traffic,它有两列->日期和“车辆”,还有更多,但这两列是我需要匹配的

日期列存储为Unix时间戳。现在只需比较从php from time函数获取的当前日期就很容易了,但是这里的技巧是,其中一些日期也附加了时间

例如,如果运行strotime13-02-2017 13:00和strotime13-02-2017,您将得到两个不同的结果。基本上我只关心匹配日期而不是时间

因此,我需要某种方法从数据库中选择与当前Unix时间戳相等的车辆和日期,但使用上面介绍的技巧,因此我只需要尽可能多地选择日期。

您可以使用from_UNIXTIME将时间戳转换为日期时间,然后使用date函数获取其中的日期部分

WHERE DATE(FROM_UNIXTIME(date)) = CURDATE()
但是,这不能使用索引,因此可以使用索引的另一种方法是检查它是否在当前日期的时间戳范围内:

WHERE date BETWEEN UNIX_TIMESTAMP(CURDATE()) AND UNIX_TIMESTAMP(CURDATE()) + 86399

一天有86400秒。

,也许吧。正如在WHERE DATEdate=DATECURRENT\u Timestame中一样,这很好,但当我在WHERE DATEFROM\u UNIXTIMEdate=2017-03-18中执行此操作时,由于某些原因失败,我尝试此操作的原因是因为有时日期是动态选择的,即它可能不需要等于现在。您需要将2017-03-18放在引号中。否则就是减去数字,这是1996年,非常感谢你,它工作得很好……你给我省了很多麻烦,因为我最初是提取所有数据,然后用php检查日期,这在现实世界中用真实数据会非常慢。
SELECT * FROM traffic WHERE DATE(date) = DATE(CURRENT_TIMESTAMP);