PHP& SQL - 将unix时间戳与MySQL CURDATE()进行比较

时间:2013-09-27 17:11:51

标签: php mysql sql time

我正在尝试做以下事情: 在我的数据库中,每行都有一些时间行(使用time()函数)。 例如:1380300397。 现在,我想构建一个从当天获取行的查询。 我试过这个查询没有成功:

SELECT `id`,DATE_FORMAT(`time`, '%Y-%m-%d') FROM `facts` 
WHERE `app` = 1 AND DATE(`time`) = CURDATE()

我做错了什么? 谢谢!

3 个答案:

答案 0 :(得分:3)

AND DATE(FROM_UNIXTIME(time)) = CURDATE()

答案 1 :(得分:1)

您可以尝试使用NOW()代替CURDATE

答案 2 :(得分:0)

在我看来,这是最好的方法。我知道这看起来似乎是第一眼的开销,但是这样你就不会对你的列应用任何功能,因此你的查询可以使用索引,如果你的time列上有一个。

SELECT 
    `id`, DATE_FORMAT(`time`, '%Y-%m-%d')
FROM
    `facts`
WHERE
    `app` = 1
        AND `time` >= UNIX_TIMESTAMP(CONCAT(CURDATE(), ' 00:00:00'))
        AND `time` < UNIX_TIMESTAMP(CONCAT(DATE_ADD(CURDATE(), INTERVAL 1 DAY),
                    ' 00:00:00'))