如何在SQL中仅获得带有时间戳的本周记录?

时间:2019-02-10 17:55:13

标签: php mysql sql database timestamp

我在数据库中有一个表,其中包含登录记录。

    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

2 个答案:

答案 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

Demo