Cześć,
czy jest możliwość porównywać daty które w bazie mam jako string?
Mam w bazie daty zapisane w kolumnie date jako 1/3/2022 - jest spowodowane potrzebą takiego formatu po stronie front.
Teraz chcę zrobić zapytanie które pobierze wszystkie rekordy od dziś na 5 dni do przodu i nie wiem jak to zrobić
Porównywanie dat w bazie danych
- Rejestracja: dni
- Ostatnio: dni
- Postów: 180
- Rejestracja: dni
- Ostatnio: dni
- Postów: 10227
ssquad napisał(a):
Mam w bazie daty zapisane w kolumnie date jako 1/3/2022 - jest spowodowane potrzebą takiego formatu po stronie front.
Co za głupia decyzja. Nie mogłeś tego trzymać jako datetime albo timestamp? I wyświetlić na froncie w jakimbyś sobie tylko formacie nie chciał?
Łączenie widoku i persystencji to pierwszy krok do legacy i spaghetti code'u.
Teraz chcę zrobić zapytanie które pobierze wszystkie rekordy od dziś na 5 dni do przodu i nie wiem jak to zrobić
Musiałbyś sparsować ten string na datę lub timestamp i porównać; bo zakładam żę ten zapis dat jest "timezone-naive", tzn nie ma informacji o strefie czasowej?
Moja rada: jeśli jeszcze możesz, to zmień ten typ pola ze string/varchar na datetime albo timestamp.
- Rejestracja: dni
- Ostatnio: dni
- Postów: 434
@ssquad: Tak jak napisał @TomRiddle - pozbądź się tego formatu. Jeżeli jednak chciałbyś sobie coś na szybko wykombinować to spróbuj z funkcją MySQL str_to_date(), przykładowo:
SELECT * FROM `table_name` where STR_TO_DATE(`col_date`, '%d/%m/%Y') > '2022-03-06'
Znajdzie wszystkie rekordy dla daty 7/3/2022, 8/3/2022 9/3/2022 itd.
- Rejestracja: dni
- Ostatnio: dni
- Lokalizacja: Tychy
- Postów: 25
Cześć.
Używałem dat w wielu projektach i zawsze z formatem daty jest problem.
Odkąd zacząłem zapisywać datę jako int w formacie timestamp- porównywanie dat / dodawanie / odejmowanie dni /miesięcy itd. przestało być problemem
Polecam :)
- Rejestracja: dni
- Ostatnio: dni
- Lokalizacja: 700m n.p.m.
- Postów: 681
Przecież jest mnóstwo funkcji do operacji na dacie i czasie.
miccom napisał(a):
Cześć.
Używałem dat w wielu projektach i zawsze z formatem daty jest problem.
Odkąd zacząłem zapisywać datę jako int w formacie timestamp- porównywanie dat / dodawanie / odejmowanie dni /miesięcy itd. przestało być problemem
Polecam :)
Nie, to zły pomysł - co w sytuacji, kiedy chcesz np. zanotować w jakiej strefie czasowej jest dana data i czas? Będzie stosował dodatkową kolumnę żeby tam jakoś to wyrzeźbić? Tymczasem są typy np. timestamp które mają dodatkowo strefę czasową. Operacje na datach są proste, wystarczy wziąć pupę w troki i poczytać o funkcjach daty / czasu, niektórym nawet tego się nie chce.
- Rejestracja: dni
- Ostatnio: dni
- Lokalizacja: Tychy
- Postów: 25
TomRZ napisał(a):
Przecież jest mnóstwo funkcji do operacji na dacie i czasie.
miccom napisał(a):
Cześć.
Używałem dat w wielu projektach i zawsze z formatem daty jest problem.
Odkąd zacząłem zapisywać datę jako int w formacie timestamp- porównywanie dat / dodawanie / odejmowanie dni /miesięcy itd. przestało być problemem
Polecam :)Nie, to zły pomysł - co w sytuacji, kiedy chcesz np. zanotować w jakiej strefie czasowej jest dana data i czas? Będzie stosował dodatkową kolumnę żeby tam jakoś to wyrzeźbić? Tymczasem są typy np. timestamp które mają dodatkowo strefę czasową. Operacje na datach są proste, wystarczy wziąć pupę w troki i poczytać o funkcjach daty / czasu, niektórym nawet tego się nie chce.
To podrzuć jakiś kod do wyciągania z bazy danych elementów pomiędzy dwoma datami :) Aż jestem ciekaw jak to rozwiązujesz u siebie :)