Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> MYSQL - ile dni ma dany miesiąc
qrcze_pieczone
post 25.10.2010, 15:53:00
Post #1





Grupa: Zarejestrowani
Postów: 59
Pomógł: 2
Dołączył: 13.04.2007

Ostrzeżenie: (0%)
-----


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
Go to the top of the page
+Quote Post
wookieb
post 25.10.2010, 16:01:02
Post #2





Grupa: Moderatorzy
Postów: 8 989
Pomógł: 1550
Dołączył: 8.08.2008
Skąd: Słupsk/Gdańsk




Dobra rada: Przejrzyj listę funkcji dotyczących DAT w manualu MYSQL


--------------------
Go to the top of the page
+Quote Post
qrcze_pieczone
post 25.10.2010, 17:18:54
Post #3





Grupa: Zarejestrowani
Postów: 59
Pomógł: 2
Dołączył: 13.04.2007

Ostrzeżenie: (0%)
-----


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
Go to the top of the page
+Quote Post
BaN
post 25.10.2010, 21:21:15
Post #4





Grupa: Zarejestrowani
Postów: 158
Pomógł: 43
Dołączył: 9.11.2007

Ostrzeżenie: (0%)
-----


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'))



Go to the top of the page
+Quote Post
qrcze_pieczone
post 25.10.2010, 22:14:59
Post #5





Grupa: Zarejestrowani
Postów: 59
Pomógł: 2
Dołączył: 13.04.2007

Ostrzeżenie: (0%)
-----


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
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 3.05.2025 - 06:02