Naptár a mysql-ből, webfejlesztés
Valamiben találkoztam a ru_perl közösségben az aktuális hónap naptárában, amelyet egyetlen SQL lekérdezés hajt végre. Nagyon tetszett nekem, meg akarom osztani (:
Itt megadom a számításokat a bejegyzésből, remélem, hogy nem kell megadnia a szerzői jogot. Nos, röviden tájékoztatom az üzemeltetőket és a funkciókat.
Először a margók számát vesszük fel:
Az UNION operátor több SELECT munkáját kombinálja. Az első SELECT-ben kért oszlop nevét vagy álnevét ezután a kimenethez használják. Minden egyes lekérdezés adattípusának meg kell egyeznie, ellenkező esetben a masika verziójának függvényében vagy a nagyobbik van kijelölve, vagy a többiek csonkulnak. ALL azt jelenti, hogy minden rekordot kiválasztanak, nem csak egyedieket. Kérésünkre ez nem szükséges.
Ugyancsak használja az al-lekérdezés (mint t) elnevezését FROM után. Erre azért van szükség, mert a FROM-záradék összes tábláját meg kell nevezni. Számomra ez a kérés időről időre egy helyileg telepített maszikán (phpmyadmin keresztül), ami # 1146 - A "mysql.t" táblázat nem létezik.
Térjünk vissza a naptárba. Korlátozzuk a napok számát az utolsó oszlopban. Ehhez ismernie kell a SELECT DAYOFMONTH (LAST_DAY (NOW ())) hónap hónapjainak számát.
A NOW megjeleníti a mai dátumot, LAST_DAY a hónap utolsó napját adja meg egy adott dátumnak ÉÉÉÉ-HH-NN, DAYOFMONTH megadja a napi számot a hónapban.
Kísértés marad, hogy a hónap nem mindig kezdődik hétfőn. Így tanuljuk meg az első nap napját, figyelembe véve a DAYOFWEEK funkció polgári szokását, hogy vasárnap kezdődjön a hét: