Jak mogę wyświetlić i policzyć wartości, których daty są wczorajsze? Kiedyś time()
wstawiałem datę do bazy danych. Przykład:
URL: google.com youtube.com google.com youtube.com test.com youtube.com
DateVisited: 1313668492 1313668540 1313668571 13154314
Chcę wyświetlić, ile adresów URL istnieje wiele w tabeli, a także ile z tych adresów URL zostało odwiedzonych wczoraj. Przykładowy wynik:
LINK | timesExisted | timesVisitedYesterday
Google.com | 2 | 2
youtube.com| 3 | 3
Mam już pomysł na uzyskanie wczorajszej daty, ale nie mam pomysłu na policzenie, ile razy URL istniał wczoraj i zliczanie, ile razy adres URL istniał w tabeli.
Możesz użyć:
lub
lub
lub
źródło
Możesz uzyskać wczorajszą datę, używając wyrażenia
CAST(NOW() - INTERVAL 1 DAY AS DATE)
. Więc coś takiego może działać:źródło
Zapytanie z ostatnich tygodni:
źródło
Obliczanie ostatniego lub następnego dnia, tygodnia, miesiąca i roku. To może być pomocne dla każdego.
Bieżąca data:
Wczoraj:
Jutro:
Ostatni tydzień:
Następny tydzień:
Ostatni 1 miesiąc:
Następny miesiąc:
Obecny miesiąc:
Ostatni rok:
Następny rok:
źródło
Chociaż wybrana odpowiedź jest poprawna i bardziej zwięzła, argumentowałbym za strukturą opisaną w innych odpowiedziach:
Jeśli potrzebujesz tylko samej daty bez znacznika czasu, możesz również zapisać ją w następujący sposób:
Powodem użycia
CAST
versusSUBDATE
jestCAST
składnia ANSI SQL.SUBDATE
jest specyficzną dla MySQL implementacją składnika arytmetycznego datCAST
. Nabycie nawyku używania składni ANSI może zmniejszyć ból głowy w przypadku migracji do innej bazy danych. Dobrze jest też mieć nawyk jako profesjonalna praktyka, ponieważ prawie na pewno będziesz pracować z innymi DBMS w przyszłości.Żaden z głównych systemów DBMS nie jest w pełni zgodny z ANSI, ale większość z nich implementuje szeroki zestaw składni ANSI, podczas gdy prawie żaden z nich poza MySQL i jego potomkami (MariaDB, Percona itp.) Nie implementuje składni specyficznej dla MySQL.
źródło
Zaadaptowałem jedną z powyższych odpowiedzi z cdhowie, ponieważ nie mogłem jej zmusić do działania. To wydaje się działać dla mnie. Podejrzewam, że można to również zrobić przy użyciu funkcji UNIX_TIMESTAMP.
źródło