我在SQL特定情况下被困了几天。方案如下,
我有一张桌子,我们称之为traffic
,它有2列 - > date
和`车辆(还有更多,但这些是我需要匹配的两个)。
日期列存储为Unix时间戳。现在这可以很容易地比较当前日期(从时间()函数的php获得)但是这里的技巧是这些日期中的一些也有时间附加到它们。
例如,如果您运行strtotime(13-02-2017 13:00)和strtotime(13-02-2017),您将获得2个不同的结果。基本上我只关心匹配日期而不是时间。
所以我需要一些方法从数据库中选择等于当前Unix时间戳的vehicle
和date
但是上面解释的技巧,所以我只需要很多日期,如果可能的。
答案 0 :(得分:1)
您可以使用FROM_UNIXTIME()
将时间戳转换为日期时间,然后使用DATE()
函数获取日期时间。
WHERE DATE(FROM_UNIXTIME(date)) = CURDATE()
但是,这不能使用索引,因此可以使用索引的另一种方法是检查它是否在当前日期的时间戳范围内:
WHERE date BETWEEN UNIX_TIMESTAMP(CURDATE()) AND UNIX_TIMESTAMP(CURDATE()) + 86399
(一天有86400秒)。
答案 1 :(得分:0)
SELECT * FROM traffic WHERE DATE(date) = DATE(CURRENT_TIMESTAMP);