我正在尝试做以下事情:在我的数据库中,每个行都有时间(使用 time() 函数)。例如:1380300397。现在,我想构建一个查询来获取当天的行。我试过这个查询没有成功:
SELECT `id`,DATE_FORMAT(`time`, '%Y-%m-%d') FROM `facts`
WHERE `app` = 1 AND DATE(`time`) = CURDATE()
我究竟做错了什么?谢谢!
AND DATE(FROM_UNIXTIME(time)) = CURDATE()
那么你可以尝试使用NOW()
而不是CURDATE
在我看来,这是最好的方法。我知道乍一看这似乎是一种开销,但是这样你就不会对你的列应用任何函数,因此如果你的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'))