Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: MYSQL - ile dni ma dany miesiąc
Forum PHP.pl > Forum > Bazy danych > MySQL
qrcze_pieczone
Witam
Czy może ktoś pomysł jak wyciągnąć z Mysql informacje ile dni ma każdy miesiąc w roku,
z tego co mi się udało zorientować to nie ma do tego gotowej funkcji w Mysql.
W PHP jest to stosunkowo proste do zrobienia:
  1. $month=2;
  2. $year=2009;
  3. echo date('t', mktime(0, 0, 0, $month , 1, $year));

ale jak to zrobić w MYSQL
za dobrą radę będę jak zawsze dzwięczny winksmiley.jpg
wookieb
Dobra rada: Przejrzyj listę funkcji dotyczących DAT w manualu MYSQL
qrcze_pieczone
wookieb trafność twojej rady zwaliła mnie z krzesła winksmiley.jpg
mimo że przeglądałem funkcje w manualu MySQL-a nie znalazłem gotowej funkcji na mój problem (może źle przeglądam tego manuala, może ta funkcja gdzieś jest tak mocno schowana, że ja jej znaleźć nie mogę sad.gif ).
Więc postanowiłem sam napisać funkcję która w MySQL mi da efekt o który mi chodzi

  1. DROP FUNCTION IF EXISTS nazwaTwojejBazy.HowManyDayInMonth;
  2. CREATE FUNCTION nazwaTwojejBazy.`HowManyDayInMonth`(YEAR_ INT(4),MONTH_ INT(2)) RETURNS int(2)
  3. READS SQL DATA
  4. DETERMINISTIC
  5. BEGIN
  6.  
  7. DECLARE return_value INT(2);
  8. SELECT TIMESTAMPDIFF(DAY,CONCAT(YEAR_,"-",MONTH_,"-","01"),LAST_DAY(CONCAT(YEAR_,"-",MONTH_,"-","01")))
  9. INTO return_value;
  10. RETURN (return_value+1);
  11. END;

Funkcję wywołujemy
  1. SELECT HowManyDayInMonth("2009","02") AS Ile_Dni_W_Miesiacu

umieszczam jak by ktoś nie mógł takowej funkcji znaleźć

pozdrawiam
BaN
Cytat(qrcze_pieczone @ 25.10.2010, 18:18:54 ) *
wookieb trafność twojej rady zwaliła mnie z krzesła winksmiley.jpg

Ale on Ci dobrze radził, nie ma zbytnio sensu tworzyć funkcji użytkownika, skoro już takie funkcje są, należy skorzystać tylko z dwóch:
  1. SELECT DAYOFMONTH(LAST_DAY('2009-02-01'))



qrcze_pieczone
BaN ja zanim zadałem to pytanie przejrzałem spis funkcji przetwarzania daty w MySQL
i żadna nie miała w opisie że zwraca liczbę dni dla danego miesiąca,
a nie miałem czasu kombinować ani analizować, więc zadałem to pytanie
a po radzie "wookieb" tak się trochę podirytowałem, że w końcu przekombinowałem winksmiley.jpg

Zadałem proste pytanie ( w końcu do tego jest to forum) i oczekiwałem prostej odpowiedzi takiej jak od ciebie

dziękuję i pozdrawiam
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.