我正在尝试做以下事情: 在我的数据库中,每行都有一些时间行(使用time()函数)。 例如:1380300397。 现在,我想构建一个从当天获取行的查询。 我试过这个查询没有成功:
SELECT `id`,DATE_FORMAT(`time`, '%Y-%m-%d') FROM `facts`
WHERE `app` = 1 AND DATE(`time`) = CURDATE()
我做错了什么? 谢谢!
答案 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'))