2015-08-09 5 views
1

У меня есть таблица с датой и я хочу выбрать все записи, которые были получены с прошлой недели, с субботы по воскресенье (не последние 7 дней).Выберите данные из последней недели mysql query

значения Таблица

Date    ID Value 
8/3/2015 8:03 PM a  10   
8/4/2015 8:03 PM b  20   
8/5/2015 8:03 PM c  30  
8/6/2015 8:03 PM d  40  
8/7/2015 8:03 PM e  50  
8/9/2015 8:03 PM f  60   
8/10/2015 8:03 PM g  70  

Я только хочу, чтобы выбрать идентификатор из прошлого, которые являются, б, в, г, д. Как написать этот запрос mysql?

+1

Что вы пытались до сих пор? – Bulat

+0

https://dev.mysql.com/doc/refman/5.0/en/date-and-time-functions.html – JamieD77

+0

@Bulat Я попытался использовать этот SELECT * FROM StudentPurchasedHistoryTable WHERE [Дата покупки]> = DATEADD (день, -7, GETDATE()), но он отображает только все из них – RiaMamaMia

ответ

1

Это немного сложно. Один из способов - попробовать что-то вроде week(), но это проблема в начале года.

Другой подход - получить дату полночи в воскресенье и использовать ее для расчета. Я думаю, что это выражение делает это:

date_sub(curdate(), interval (weekday(curdate()) + 1) % 7) - 1 day) 

Вы можете подключить это в пункте where:

select v.* 
from values v 
where v.date < date_sub(curdate(), interval (weekday(curdate()) + 1) % 7) - 1 day) and 
     v.date >= date_sub(curdate(), interval (weekday(curdate()) + 1) % 7) - 8 day); 

Примечание: этот препарат можно использовать индекс на date.