creat1vv
@creat1vv
занимаюсь написанием дискорд ботов на python.

Как выбрать из дат те что были на этой неделе?

У меня в базе данных есть действия с датами. Как я могу проверить было ли это на этой неделе?
  • Вопрос задан
  • 81 просмотр
Решения вопроса 1
leahch
@leahch
Я мастер на все руки, я козлик Элек Мэк :-)
Если время хранится таймстемпах (а по другому очень и очень плохо), то вычисляем таймстемп, и оператор between
SELECT * FROM Products
WHERE Date BETWEEN 1669013940394 AND 1669618553557;


Вычислить даты:
from datetime import datetime, timedelta, timestamp

day = '12/Oct/2013'
dt = datetime.strptime(day, '%d/%b/%Y')
start = dt - timedelta(days=dt.weekday())
end = start + timedelta(days=6)
print(start.strftime('%d/%b/%Y'))
print(end.strftime('%d/%b/%Y'))
print(int(timestamp(start)*1000))
print(int(timestamp(end)*1000))
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
Vindicar
@Vindicar
1. Берёшь текущую дату
2. Находишь её код дня недели (dayofweek).
3. Вычитаешь из её кода код понедельника (смотри в документации), получаешь разность d
4. Вычитаешь из текущей даты d дней, получаешь дату понедельника на этой неделе.
5. Прибавляешь к дате понедельника 7 дней, получаешь дату следующего понедельника.
6. Проверяешь искомую дату на вхождение в этот диапазон.

Альтернативно вместо 3. и 4., в цикле вычитаешь из текущей даты 1 день, пока не получишь понедельник.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы