Thuunder
27.11.2006, 10:29:00
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?
Zamień tak date by była wyrażana w ilościach minionych sekund - time()
Ziels
27.11.2006, 11:24:15
Albo explode('-', $data) ;P
siemakuba
27.11.2006, 11:29:01
Nie do końca zrozumiałem w którym miejscu chcesz sprawdzać tę datę. Z poziomu zapytania SQL możesz zrobić tak:
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ć
SELECT * FROM tabela WHERE "DATA_Z_FORMULARZA" BETWEEN data_od AND data_do;
pozdr.
Thuunder
28.11.2006, 12:20:37
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
28.11.2006, 12:41:22
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
28.11.2006, 14:47:22
spoko manual postgresa ma tylko 1553 strony. szkoda,że wcześniej na to nie wpadłem przecież "łatwiej" mi będzie tam znaleźć.
siemakuba
28.11.2006, 15:28:13
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
28.11.2006, 16:18:48
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
28.11.2006, 16:26:22
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
28.11.2006, 21:00:17
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
siemakuba
28.11.2006, 21:32:09
Banialuki kolego.Operator porównania BETWEEN
http://www.postgresql.org/docs/8.1/interac...comparison.htmlInstrukcje warunkowe
http://www.postgresql.org/docs/8.1/interac...l.html#AEN12604Na podstawie tych informacji mamy:
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.