我想编写查询来从在周间隔之前注册的表中获取用户。 对于前者今天的日期是2017-08-17,我需要在2017-08-10,2017-08-03,2017-07-27注册的用户,依此类推。如果今天的日期是2017-08-20,那么用户将在2017-08-13,2017-08-06注册。
id name date
1 ABC 2018-08-16
2 PQR 2018-08-10
3 LMN 2018-07-27
4 AAA 2018-01-01
输出
id name date
2 PQR 2018-08-10
3 LMN 2018-07-27
答案 0 :(得分:1)
表达此问题的一种方法是认识到我们希望保留与今天的差异为7天的倍数的日期。我们可以比较每条记录的UNIX时间戳,并检查秒数除以7天内的秒数是否为零。
SELECT *
FROM yourTable
WHERE
MOD(UNIX_TIMESTAMP(CURDATE()) -
UNIX_TIMESTAMP(DATE(reg_date)), 7*24*60*60) = 0
在这里演示:
答案 1 :(得分:0)
SELECT * FROM user WHERE WEEKDAY(`date`) = WEEKDAY(NOW());
这将为您提供所有注册0,7,14,21天等的用户。