Хранимая процедура: Получить месяц - PullRequest
1 голос
/ 18 февраля 2012

Я пытаюсь создать хранимую процедуру, которая при задании значения месяца возвращает пользователю последний день месяца.

Пока:

DROP PROCEDURE IF EXISTS getLastDayMonth$$
CREATE PROCEDURE getLastDayMonth(IN inMonth int) 
BEGIN
    SELECT LAST_DAY(inMonth);
END $$

У меня возникли проблемывыяснить, как я могу сделать inMonth параметром, который принимает функция sql Last_DAY.Есть ли другая функция, которая принимает int как месяц и возвращает последний день месяца?Я стараюсь не указывать тип DATE в качестве параметра

1 Ответ

1 голос
/ 18 февраля 2012

Вы можете добавить мотыльков в первый день года и получить last_date:

SELECT LAST_DAY( DATE_ADD( '2012-01-01 00:00:00',  
                           INTERVAL inMonth - 1 MONTH) 
               );

Альтернативное решение: ELT Функция:

SELECT cast( 
         ELT(inmonth, '31', '28', '31', '30', '31', .... ,'31' )
         as SMALLINT 
       ) as last_day

Последнее, используйтеcase заявление:

SELECT case inmonth
        when 1 then 31
        when 2 then 29
        ...
        when 12 then 31
       end as last_day

РЕДАКТИРОВАНИЕ

mysql> CREATE PROCEDURE getLastDayMonth(IN inMonth int)
    -> begin
    -> SET @t=inMonth -1;
    -> SELECT LAST_DAY( DATE_ADD( '2012-01-01 00:00:00',INTERVAL @t MONTH));
    -> end@@
Query OK, 0 rows affected (0.24 sec)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...