我在数据库中有一个表,其中包含登录记录。
Table name: user_logins
ID | timestamp
1 2019.01.03 (Year, Month, Day)
2 2019.01.04
3 2019.01.05
4 2019.01.05
5 2019.01.07
6 2019.01.07
7 2019.01.09
我只想显示本周的记录数。 从星期一到星期日(04-02-2019 ... 10-02-2019)
我的PHP和SQL代码是:
$mo = mysql_num_rows(mysql_query('SELECT * FROM user_logins WHERE DAYNAME(DATE(timestamp)) = "monday" and timestamp >= DATE_SUB(CURDATE(), INTERVAL DAYOFWEEK(CURDATE())-0 DAY)'));
这应显示2019年4月2日的记录
这是我的SQL Fiddle链接: SQL Fiddle
答案 0 :(得分:1)
此:
DATE_ADD(CURDATE(), INTERVAL - WEEKDAY(CURDATE()) DAY)
给出本周的星期一。
所以:
SELECT * FROM user_logins
WHERE
timestamp
BETWEEN DATE_ADD(CURDATE(), INTERVAL - WEEKDAY(CURDATE()) DAY)
and
NOW()
答案 1 :(得分:0)
尝试以下查询:
SELECT id FROM `user_logins`
WHERE timestamp >= curdate() - INTERVAL DAYOFWEEK(curdate())+6 DAY
AND timestamp < curdate() - INTERVAL DAYOFWEEK(curdate())-1 DAY