我将所有日期存储为数据库中的timestamps(int)。
我怎样才能获得3天前的日期?
我试过
SELECT date from user WHERE DATE_ADD(DATE( FROM_UNIXTIME( `created` ) ), INTERVAL 3 DAY) = CURDATE()
这是最好/最有效的方法吗?
答案 0 :(得分:0)
我认为数据库更喜欢只添加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));
在两种情况下测试在SELECT之前放置DESCRIBE关键字,并且数据库响应它将如何执行查询
答案 1 :(得分:0)
SELECT date
FROM user
WHERE created = UNIX_TIMESTAMP(CURRENT_DATE - INTERVAL 3 DAY)
注意:where子句中的created
列没有使用任何函数。此查询应该能够使用索引。