• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Jak wybierać rekordy z bazy danych z datą aktualnego tygodnia?

VPS Starter Arubacloud
+1 głos
939 wizyt
pytanie zadane 27 września 2015 w SQL, bazy danych przez DavidMCPolska Bywalec (2,770 p.)
zmienione kategorie 27 września 2015 przez DavidMCPolska
Mam tabelę która ma jedną kolumnę typ DATETIME. Jakie muszę zrobić zapytanie, które wybierze wiersze z datą z aktualnego tygodnia?

3 odpowiedzi

+1 głos
odpowiedź 27 września 2015 przez Janusz92 Bywalec (2,150 p.)
wybrane 27 września 2015 przez DavidMCPolska
 
Najlepsza

Z aktualnego tygodnia, czyli wszystkie dni po ostatniej niedzieli? Przykładowo dzisiaj byłyby to dni 21, 22, 23, 24, 25, 26 i 27 września 2015?

Ja wpadłem na coś takiego:

EDIT: jednak źle :(

 

komentarz 27 września 2015 przez DavidMCPolska Bywalec (2,770 p.)
Niestety to zapytanie nie wybiera wierszy z aktualnego dnia.
komentarz 27 września 2015 przez DavidMCPolska Bywalec (2,770 p.)
Ale masz jeszcze szansę na dobrą odpowiedź, jak wytłumaczysz mi klauzule WHERE, bo według mnie wystarczy trochę je przerobić i będzie OK.
komentarz 27 września 2015 przez Janusz92 Bywalec (2,150 p.)

Wyszło mi takie coś tym razem:

SELECT * FROM tabela WHERE WEEK(datetime) > WEEK(NOW()) - 1

Niestety jest taka wada, że nowy tydzień jest liczony po każdej sobocie, a nie niedzieli.

komentarz 27 września 2015 przez DavidMCPolska Bywalec (2,770 p.)
Nie martw się, zaraz powinienem to przerobić żeby działało od poniedziałku do niedzieli ;)
komentarz 27 września 2015 przez DavidMCPolska Bywalec (2,770 p.)
edycja 27 września 2015 przez DavidMCPolska

Działa wink. Dzięki :). Przerobiłem to na takie coś:

SELECT * FROM wpisy WHERE WEEK(date,1) = WEEK(NOW()) -1

1 po date oznacza tryb, domyślnie jest na 0 czyli zaczynaj od soboty, a 1 od poniedziałku :)

Dostałeś Najlepszą Odpowiedź ;) Zebrałeś dużo punktów :)

komentarz 27 września 2015 przez Janusz92 Bywalec (2,150 p.)
Dzięki :)

Tak, parametr, poczytałem teraz trochę :)

Ale czy jeśli mają być daty z obecnego tygodnia, a jako parametr jest teraz podana "jedynka" to chyba "-1" z samego końca zapytania trzeba zlikwidować?
1
komentarz 27 września 2015 przez Janusz92 Bywalec (2,150 p.)

Jest jeszcze jedna ważna kwestia. Skoro zapytanie opiera się na ilości tygodni w roku, to należy jeszcze dodać do klauzuli WHERE tylko obecny rok. Inaczej wybierze Ci rekordy z obecnego tygodnia, ale z dowolnego roku.

Albo w ogóle oprzeć zapytanie na YEARWEEK

Czyli kolejna wersja zapytania :):

SELECT * FROM tabela WHERE YEARWEEK(datetime,1) = YEARWEEK(NOW(),1) 

 

komentarz 3 października 2015 przez DavidMCPolska Bywalec (2,770 p.)
Tak, dzięki za podpowiedź i jak robiłem testy z zapytaniem to pasowała wersja bez -1, ale przy wklejaniu tutaj i w kodzie musiałem wkleić poprzednią wersję i dzisiaj się właśnie skapnąłem, że wyświetla wpisy z poprzedniego tygodnia ;)
+1 głos
odpowiedź 27 września 2015 przez niezalogowany
Jesteś pewny, że wybrałeś dobrą kategorię zapytania? (wybrałeś c/c++, powinieneś wybrać "Bazy danych i SQL")
komentarz 27 września 2015 przez DavidMCPolska Bywalec (2,770 p.)
Sorki, zapomniałem ustawić kategorię :P
0 głosów
odpowiedź 27 września 2015 przez Bantu Nałogowiec (34,170 p.)
Obstawiam, że korzystasz z bazy MySQL to ja bym spróbował jakimś takim zapytaniem:

SELECT * FORM tbl WHERE weekofyear(var_datetime) == 34;

Nie wiem czy takie zapytanie jest poprawne ale powinno wyciągnąć wszystkie rekordy z 34 tygodnia roku.
Nie wiem też czy Ci o takie coś chodziło.

Zawsze możesz zajrzeć tutaj: https://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html#function_weekofyear

Podobne pytania

0 głosów
1 odpowiedź 2,431 wizyt
pytanie zadane 21 lipca 2015 w SQL, bazy danych przez mowmiheniek Stary wyjadacz (11,900 p.)
+1 głos
1 odpowiedź 249 wizyt
0 głosów
1 odpowiedź 214 wizyt
pytanie zadane 27 lipca 2018 w SQL, bazy danych przez MaxD1998 Początkujący (280 p.)

92,451 zapytań

141,261 odpowiedzi

319,073 komentarzy

61,853 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Akademia Sekuraka 2024 zapewnia dostęp do minimum 15 szkoleń online z bezpieczeństwa IT oraz dostęp także do materiałów z edycji Sekurak Academy z roku 2023!

Przy zakupie możecie skorzystać z kodu: pasja-akademia - użyjcie go w koszyku, a uzyskacie rabat -30% na bilety w wersji "Standard"! Więcej informacji na temat akademii 2024 znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...