我将所有日期作为时间戳(int)存储在数据库中。
我怎样才能得到恰好提前 3 天的日期?
我试过
SELECT date from user WHERE DATE_ADD(DATE( FROM_UNIXTIME( `created` ) ), INTERVAL 3 DAY) = CURDATE()
这是最好/最有效的方法吗?
我将所有日期作为时间戳(int)存储在数据库中。
我怎样才能得到恰好提前 3 天的日期?
我试过
SELECT date from user WHERE DATE_ADD(DATE( FROM_UNIXTIME( `created` ) ), INTERVAL 3 DAY) = CURDATE()
这是最好/最有效的方法吗?
我认为数据库更喜欢只将日期添加 2 次来定义范围,例如:
SELECT date FROM user
WHERE UNIX_TIMESTAMP(DATE_ADD(CURDATE(), INTERVAL -3 DAY)) <= `created`
AND `created` < UNIX_TIMESTAMP(DATE_ADD(CURDATE(), INTERVAL -2 DAY));
测试在这两种情况下都将 DESCRIBE 关键字放在 SELECT 之前,并且数据库会响应它将如何执行查询
SELECT date
FROM user
WHERE created = UNIX_TIMESTAMP(CURRENT_DATE - INTERVAL 3 DAY)
注意:created
where 子句中的列上没有使用函数。这个查询应该可以使用索引。