2

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

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

我究竟做错了什么?谢谢!

4

3 回答 3

4
AND DATE(FROM_UNIXTIME(time)) = CURDATE()
于 2013-09-27T17:19:02.577 回答
1

那么你可以尝试使用NOW()而不是CURDATE

于 2013-09-27T17:13:24.290 回答
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'))
于 2013-09-27T17:24:31.453 回答