|
|
informix数据库中的时间运算 今天看SUN服务器是的mail(vi /var/mail/xxxuser),发现定时任务上的一些存储过程执行有错误,其中有一个错误是long transaction,长事务错误,到数据库一查,天哪,一天就十几万条记录,我写的存储过程时间上只是精确到月,一个月的数据一次删除,还好数据库没罢工,之前定义到月是因为informix中日期字段不能直接减去天数做运算,这种态度不可取~~~,只好重写存储过程,时间精确到天,下面是具体的informix时间运算。ORACLE的时间字段可以直接减去(加上)天数运算(select sysdate-365 from dual;)。 下面的语句中extend用来限制到年、月、日,interval是说明间隔数 减去(加上)天数,interval最多取两位
从time_stamp字段减去两天时间 select extend(time_stamp-interval(2) day to day) from users;
从当前时间减去两天 select extend(current-interval(2) day to day) from users; 减去(加上)月数,interval最多取两位
从time_stamp字段减去两个月 select extend(time_stamp-interval(2) month to month) from users; 从当前时间减去两个月 select extend(current-interval(2) month to month) from users; 减去(加上)年数,interval最多取四位 从time_stamp字段减去两个年 select extend(time_stamp-interval(2) year to year) from users; 从当前时间减去两年 select extend(current-interval(2) year to year) from users; 试了一下,上面的写法会显示到毫秒,如 2004-09-11 17:24:03.000 2004-09-11 17:24:03.000 2004-09-11 17:24:03.000 可以再加个extend限制,如下 显示到月 select extend(((extend(current-interval(2) day to day))),year to month) from users; 显示到天 select extend(((extend(current-interval(2) month to month))),year to day) from users; 显示到秒 select extend(((extend(current-interval(2) year to year))),year to second) from users; 上面讲的是其中一种方法,今天又学到一种,可以用units关键字。 --年 select current-5 units year from users --月 select current-5 units month from users --日 select current-5 units day from users --时 select current-5 units hour from users --分 select current-5 units minute from users --秒 select current-5 units second from users
| | |
阅读(825) | 评论(0) | 转发(0) |