2012-11-02 10 views
6

Pobieram dane z tabeli i pokazuje łączną liczbę wpisów. Chcę tylko pokazać sumę SUM złożonych na dzisiejszą datę, wczoraj i w tym miesiącu. Tabela używa formatu znacznika czasu unix (na przykład 1351771856).data mysql pokaż wyniki dzisiaj/wczoraj/tydzień

Obecnie używam tej linii, aby pokazać Dzisiejsze wyniki:

AND comment_date > UNIX_TIMESTAMP() - 24 * 3600"; 

ale to daje mi tylko wpisy w ciągu ostatnich 24 godzin.

Przykład: Więc powiedzmy, że jego piątek, 17:00 - to daje mi liczyć od czwartku 17:00 do piątku 17:00

Co chcę jest uzyskanie wyników dla

  • czwartek 00:00:00 - 23:59:59 (wczoraj w tym przypadku)
  • wyniki na dziś (00:00:00 - 23:59:59)
  • i ostatni tydzień, wyniki, które zaczynają o w poniedziałek, 00:00:00 do "dzisiaj" (w tym przypadku piątek).

Nie mogłem znaleźć sposobu w dokumentacji MySQL, aby to osiągnąć.

+0

Co dokładnie rozumiesz przez "prawdziwe" wartości? –

+0

na przykład: comment_date = $ today lub comment_date = $ wczoraj, comment_date = $ this_month –

+0

nie ma zmiennych "dziś" lub "wczoraj", musisz wybrać określony okres używając znacznika czasu lub innych typów dat (lub mysql różnica daty, jeśli korzystasz z datetime). Twoje podejście to jedyny sposób, aby zobaczyć wyniki, jak sądzę. – Serg

Odpowiedz

6

Kod ten mysql powinny pracować dla Ciebie:

// Today 
AND DATE(from_unixtime(comment_date)) = CURRENT_DATE 

// Yesterday 
AND DATE(from_unixtime(comment_date)) = DATE_SUB(CURRENT_DATE,INTERVAL 1 DAY) 

// This week 
AND YEARWEEK(from_unixtime(comment_date), 1) = YEARWEEK(CURRENT_DATE, 1) 

// This month 
AND YEAR(from_unixtime(comment_date)) = YEAR(CURRENT_DATE) 
AND MONTH(from_unixtime(comment_date)) = MONTH(CURRENT_DATE) 
+0

To działa idealnie! –

+0

Pozostało tylko obliczenie "w tym tygodniu" zaczynając od poniedziałku –

+0

@JoachimIsaksson, próbowałem go, ale z jakiegoś powodu użycie "@now" daje mi "błąd wewnętrzny serwera 500" –

0

Wystarczy użyć tego:

AND comment_date > date_sub(current_date, interval 1 day)