创建存储过程,我用的是Navicat,用PHPMyadmin老是报莫名其妙的错误,郁闷。
创建方法:打开目标数据库,在”函数”上点右键,New Function,类型选“进程”,设置参数,我这两个IN模式,bigint类型的参数,一个startUnix,一个endUnix.传入两个unix时间戳.
这个范例的目标是,根据传入的两个时间之间的时间段,输出这个时间段内的日期,传入时间都是某天的零点。
创建一个临时表,把计算出来的日期添加进这个表中。
定义代码:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
| BEGIN
DECLARE tempdate DATE;
DECLARE startdate DATE;
DECLARE enddate DATE;
SET enddate=DATE_FORMAT(FROM_UNIXTIME(endUnix),'%Y-%m-%d');
SET startdate=DATE_FORMAT(FROM_UNIXTIME(startUnix),'%Y-%m-%d');
SET tempdate=date_add(startdate,INTERVAL 1 DAY);
CREATE TEMPORARY TABLE temp SELECT startdate AS DATE;
while tempdate<enddate do
BEGIN
INSERT INTO temp (DATE) VALUE (tempdate);
SET tempdate=date_add(tempdate,INTERVAL 1 DAY);
END;
END while;
SELECT * FROM temp;
END |
不需要写create PROCEDURE,因为navicat会帮我们干。
保存后会提示输入存储过程的名字,我这填createDateTable.
运行:call createDateTable(1335628800,1339257600)
运行结果,显示2012-04-29到2012-06-09.