- 這可能是矯枉過正,但你可以做這樣一個過程:
use dbname;
DELIMITER $$
DROP PROCEDURE IF EXISTS `days_of_month` $$
CREATE PROCEDURE `days_of_month`(iDate DATETIME) DETERMINISTIC
BEGIN
DECLARE last_day,mm,yy,dd INT DEFAULT 0;
SET dd = 1;
SET mm = month(iDate);
SET yy = year(iDate);
set iDate = case when iDate is null then now() else iDate end;
SET last_day = date_format(LAST_DAY(iDate),'%d');
DROP TABLE IF EXISTS `days_of_month_tblTemp`;
CREATE TEMPORARY TABLE days_of_month_tblTemp(tmpDate DATE);
label1: LOOP
insert into days_of_month_tblTemp(tmpDate) values (concat(yy,'-',mm,'-',dd));
SET dd = dd + 1;
IF dd < (last_day+1) THEN ITERATE label1; END IF;
LEAVE label1;
END LOOP label1;
SELECT * from days_of_month_tblTemp;
END $$
DELIMITER ;
- 這樣運行:CALL DAYS_OF_MONTH( '2012-02-22');
如果你沒有訪問表,那麼你使用SQL呢? – Val 2011-02-22 17:34:38
爲什麼不用你的編程語言來做 - 可能要簡單得多。 – Knubo 2011-02-22 17:36:55
出於好奇,爲什麼需要在sql中完成?似乎是一個尷尬的請求,更容易在您選擇的腳本語言中完成。 – 2011-02-22 17:37:16