Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: porównanie dat
Forum PHP.pl > Forum > PHP
Thuunder
Witam, chcę wprowadzić do bazy datę z formularza. W bazie mam klika przedziałów dat np.
1. (data_od)2006-01-01 do (data_do) 2006-03-30
2. 2006-05-01 do 2006-08-20
tych przedziałów mogę mieć różną ilość. Interesuje mnie to w jaki sposób najłatwiej i najefektywniej sprawdzić czy wprowadzana data nie jest z przedziałów istniejących.
Może jest jakaś funkcja, czy trzeba robić skomplikowany warunek?
MMP
Zamień tak date by była wyrażana w ilościach minionych sekund - time()
Ziels
Albo explode('-', $data) ;P
siemakuba
Nie do końca zrozumiałem w którym miejscu chcesz sprawdzać tę datę. Z poziomu zapytania SQL możesz zrobić tak:
  1. SELECT IF ("DATA_Z_FORMULARZA" BETWEEN data_od AND data_do, 1, 0) FROM tabela;

zapytanie zwróci 1 lub 0 w zależności czy data znajduje się w przedziale.

Możesz też w waunku zapytania zrobić
  1. SELECT * FROM tabela WHERE "DATA_Z_FORMULARZA" BETWEEN data_od AND data_do;


pozdr.
Thuunder
No właśnie w sumie lepiej będzie zrobić sprawdzenie z poziomu bazy.

Ale tamto co mi powiedziałeś nie działa w Postgresie.
siemakuba
Hmm, a gdzie napisałeś że to Postgres? ;)
Podejrzewam, że postrgres ma manual. Co więcej, podejrzewam, że znajdziesz w nim to czego szukasz.

Pozostaje tam zajrzeć ;)

pozdr.
Thuunder
spoko manual postgresa ma tylko 1553 strony. szkoda,że wcześniej na to nie wpadłem przecież "łatwiej" mi będzie tam znaleźć. dry.gif
siemakuba
Cytat
spoko manual postgresa ma tylko 1553 strony. szkoda,że wcześniej na to nie wpadłem przecież "łatwiej" mi będzie tam znaleźć.
ROTFL, nie kompromituj się tak publicznie, naprawdę :)
Zapewniam cię, że internet ma więcej stron niż manual Postgresa, a jakoś miliony ludzi znajdują w nim informacje...

pozdr.
Thuunder
Człowieku jak nie chcesz to nie odpowiadaj, po to tu piszę,żeby dowiedzieć się czegoś a nie czytać jakieś marne porady tj. twoja.

Porady typu w internecie sobie możesz znaleźć czy coś to nadają się ... na smar do nart ,chyba tylko,żeby sobie postów nastukać
siemakuba
Wybacz, ale postów to ja sobie nabijać nie muszę. A już na pewno nie twoim kosztem.

Zioniesz niechęcią do manula co jest na tym forum nielubiane, więc nie dziw się, że taka jest reakcja. Nie potrafisz czegoś zrobić, normalna sprawa, każdy czegoś mniej lub bardziej nie potrafi i dlatego pyta.
Ale do stu diabłów nie pisz, że ci się nie chce do manuala zajrzeć bo ma za dużo stron.

EOT.

pozdr.
Thuunder
Po pierwsze to nie pisz mi czegoś czego nie powiedziałem, bo z np. z manuala php można dobrze skorzystać bo jest czytelny, a po drugie to jeśli jest dobra wyszukiwarka jak google to można z tego korzystać efektywnie, a na postgresie w wersji on line ciężko czegoś konkretnego się dowiedzieć, a wersja pdf przy takiej ilości stron potrafi się zawieszać dosyć często i to nie jest wygodne,żeby z niej korzystać, a jak nie idzie czegoś doszukać się w manualu to się pyta na forum, więc wsadź sobie w buty te twoje bzdety dry.gif
siemakuba
Banialuki kolego.

Operator porównania BETWEEN
http://www.postgresql.org/docs/8.1/interac...comparison.html

Instrukcje warunkowe
http://www.postgresql.org/docs/8.1/interac...l.html#AEN12604

Na podstawie tych informacji mamy:
  1. SELECT CASE WHEN "DATA_Z_FORMULARZA" BETWEEN data_od AND data_do THEN 1 ELSE 0 END FROM tabela;


To mój pierwszy kontakt z PostgreSQL, tym bardziej pierwszy kontakt z jego dokumentacją.
Potrzebne było całe 10 minut, 1 głowa i szczypta chęci.

Powtarzam, nie znam PgSQL, byc może kryję się jakiż bug w stworzonym przeze mnie zapytaniu. Zakładam, że skoro w nim masz bazę, dalej sobie poradzisz.

pozdr.
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.