Отображение строк за эту неделю только в PHP - PullRequest
3 голосов
/ 03 августа 2020

У меня есть две даты, хранящиеся в моей базе данных в виде столбцов dtp_s и dtp_e (начало, конец). Они происходят из заполненной формы, в которой пользователь должен выбрать дату начала и окончания.

Я хочу отображать записи с понедельника по воскресенье текущей недели, но мое текущее решение показывает даты за 7 дней до - Сегодня.

SELECT id
FROM _records
WHERE
    dtp_s > unix_timestamp(now() - interval 1 week)
    AND userid = ?
ORDER BY dtp_s DESC 
LIMIT 5

Я пытался изменить now() на значение strtotime( 'sunday' ), но это не показывает никаких записей, если они существуют.

Любые идеи о том, как я отображать данные только для тех, которые начинаются на той же неделе (пн - вс)?

Ответы [ 2 ]

2 голосов
/ 03 августа 2020

Чтобы получить понедельник текущей недели, вы можете использовать: -

select date(curdate() - interval weekday(curdate()) day)

Чтобы добавить это в свой код: -

SELECT id FROM _records 
WHERE dtp_s > date(curdate() - interval weekday(curdate()) day) AND userid = ? 
ORDER BY dtp_s DESC 
LIMIT 5
1 голос
/ 03 августа 2020

После рассмотрения других вопросов от SO, это может быть достигнуто в SQL вместо смешивания PHP strtotime значений, которые могут находиться в разных часовых поясах, если они неправильно настроены.

SELECT id FROM _records
WHERE dtp_s > unix_timestamp(date(now() + interval 6 - weekday(now()) DAY) - interval 1 week)
AND userid = ?
ORDER BY dtp_s DESC
LIMIT 5

I у меня отображаются только записи за эту неделю.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...