MySQL a vyber podle datumu (exclude weekend)
Karel Zak
zakkr na zf.jcu.cz
Pondělí Červen 10 10:39:09 CEST 2002
On Mon, Jun 10, 2002 at 09:54:17AM +0200, Vladimír Náprstek wrote:
> Dobrý den,
> nějak nemohu přijít na elegantní řešení problému: potřebuji spočítat čas mezi dvěma datumy,
> ale jen v pracovní dny - t.j. nezapočítávat/odečíst doboty a neděle. Nebo alespoň určit,
> kolik sobot a nedělí je v daném časovém rozmezí.
Jak dlouha by mela byt radka slusne vychovaneho mailu? :-)
Neukazu to v MySQL, protoze bych musel koukat to manualu atd. Ale
myslim, ze jen s malou zmenou v nazvech funkci by to snad melo jit
take.
Je treba znat: cislo tydne - dle ISO je prvni tyden to co ma minimalne
ctvrtek. To znamena, ze je tam nedele i sobota. Takze pocet tydnu * 2
by snad mel byt pocet volnych dni.
Rozmeci 3 az 22 Cervna:
Pocet nepracovnich dni:
test=# select (date_part('W', '2002-06-22'::date) -
date_part('W', '2002-06-03'::date)) * 2;
----------
4
Pocet vsech dni:
test=# select (date_part('D', '2002-06-22'::date) -
date_part('D', '2002-06-03'::date));
----------
19
Vysledek:
test=# select (date_part('D', '2002-06-22'::date) -
date_part('D', '2002-06-03'::date)) -
(date_part('W', '2002-06-22'::date) -
date_part('W', '2002-06-03'::date)) * 2;
----------
15
Coz? Je nutne jen, aby funkce, ktera vraci 'W' (cislo tydne) pocitala tydny
jako to dela kalendar. Napr. v Oracle je v to_char() 'W', ktere to pocita jako
pocet_dni / 7, coz je blbost -- vhodny na otestovani je rok 2005 kdy je 1.1
v sobotu a tato sobota tak patri jeste do 53 tydne roku 2004.
Karel
--
Karel Zak <zakkr na zf.jcu.cz>
http://home.zf.jcu.cz/~zakkr/
C, PostgreSQL, PHP, WWW, http://docs.linux.cz, http://mape.jcu.cz
Další informace o konferenci Databases