Как получить записи только за эту неделю с отметкой времени в SQL? - PullRequest
0 голосов
/ 10 февраля 2019

У меня есть таблица в базе данных, в которой есть записи логинов.

    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)'));

, здесь должны отображаться записи 04-02-2019

Вот моя ссылка SQL Fiddle: SQL Fiddle

Ответы [ 2 ]

0 голосов
/ 10 февраля 2019

Это:

DATE_ADD(CURDATE(), INTERVAL - WEEKDAY(CURDATE()) DAY)

дает понедельник этой недели.Итак:

SELECT * FROM user_logins 
WHERE
timestamp 
BETWEEN DATE_ADD(CURDATE(), INTERVAL - WEEKDAY(CURDATE()) DAY)
and
NOW()
0 голосов
/ 10 февраля 2019

Попробуйте следующий запрос:

 SELECT id FROM `user_logins`
    WHERE timestamp >= curdate() - INTERVAL DAYOFWEEK(curdate())+6 DAY
    AND timestamp < curdate() - INTERVAL DAYOFWEEK(curdate())-1 DAY

Демо

...