Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: DATEDIFF
Forum PHP.pl > Forum > Bazy danych > MySQL
visioner76
Witam, mam problem z zapytaniem do bazy.

baza w skrócie składa się z 3 pól:

data_wprowadzenia
status: T/N

chciałbym uzyskać takie dane:

dla 21 tygodnia danego roku suma dni od data_wprowadzenia do ostatni dzień 21 tygodnia

dla przykładu weźmy data_wprowadzenia = 2012-05-18

  1. SELECT sum(Datediff((subdate(now(), INTERVAL weekday(now())+1 DAY)) ,data_wprowadzenia)) AS ilosc_dni FROM dane WHERE status<>T AND week(data_wprowadzenia)<=21 LIMIT 1

wynikiem jest 9

i ten wynik jest poprawny, natomiast wpisując week(data_wprowadzenia)<=20 tez podaje mi 9 a powinien 2
przy 20 tygoniu powinien sie raport cofnąć o 1 tydzien i tu nie bardzo wiem jak to zrobić

Ma ktoś jakiś pomysł?

Firebright
Strasznie zagmatwałeś problem, ale spróbuje pomóc.
Aby obliczyć liczbę dni od wprowadzenia do końca bieżącego tygodnia (na podstawie aktualnej daty) możesz wykorzystać zapytanie:
  1. SELECT DATEDIFF(ADDDATE(NOW(), INTERVAL 6-WEEKDAY(NOW()) DAY), data_wprowadzenia)
  2. FROM dane;

Liczba dni zostanie obliczona dla wszystkich wierszy w tabeli.

Aby obliczyć liczbę dni od wprowadzenia do końca zadanego tygodnia (w przykładzie tydzień 22) spróbuj:
  1. SELECT DATEDIFF(ADDDATE(DATE_FORMAT(NOW(), '%Y-01-01'), INTERVAL 22*7 DAY), data_wprowadzenia)
  2. FROM dane;

Tutaj także liczba dni zostanie obliczona dla każdego wiersza.

Mam nadzieję, że te dwa zapytania pozwolą Ci rozwiązać Twój problem wink.gif.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.