从第三方网站抓的数据,时间格式为时间戳类型的,批量导入数据库发现如果保存为date类型,存不进去值。所以把字段类型设置为Varchar类型。但是为了满足业务需求,决定转成时间格式。所以写了一个存储过程实现了该需求。。。在此做个记录。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
BEGIN /*下面这三行就是相当于定义变量 变量名,变量类型,默认值 */ DECLARE no_more_record INT DEFAULT 0; DECLARE row_id INT;#定义变量ID DECLARE row_establishment_date VARCHAR(100); /*首先这里对游标进行定义*/ /*cur_record 也是一个随便取的名字 */ DECLARE cur_record CURSOR FOR select id,establishment_date from dispute_judicial_office_copy; /*这个是个条件处理,针对NOT FOUND的条件,当没有记录时赋值为1*/ /* 判断上面你写的 查询语句是否有返回的数据 */ DECLARE CONTINUE HANDLER FOR NOT FOUND SET no_more_record = 1; /*接着使用OPEN打开游标*/ OPEN cur_record; /*把第一行数据写入变量中,游标也随之指向了记录的第一行*/ /* 这里就相当于把上面的你写的select查询的查询结果第一条赋值给akey这个变量 */ FETCH cur_record INTO row_id,row_establishment_date; /* 这里是一个循环判断 */ WHILE no_more_record != 1 DO /* 你所要循环执行的语句 */ UPDATE dispute_judicial_office_copy SET establishment_date=FROM_UNIXTIME(row_establishment_date/1000,'%Y-%m-%d %h:%i:%s') WHERE id = row_id; /* 一次循环结束再次取出下一个游标值 */ FETCH cur_record INTO row_id,row_establishment_date; END WHILE; /*用完后记得用CLOSE把资源释放掉*/ CLOSE cur_record; SELECT 0; END |