Oracle的时间类型有两种date和timestamp. date精确到秒,timestamp精确到毫秒.
1.计算date类型的时间差
可以先把年,月,日,小时,分,秒用to_char函数拆分出来,再用to_number函数转换成数值类型.有了这些单独分开的时间就好办了.就再一个个的去减,记得考虑单位换算就行.比如都转换成小时或分之类的
示例:
declare
v_date date;
v_year int;
v_month int;
v_day int;
v_hour int;
v_minute int;
v_second int;
begin
v_date := sysdate;
v_year :=to_numboracle账号er( to_char(v_date,'yyyy'));
–月,日,小时,分,秒的拆分方法和上面年的一样,只要把yyyy分别替换成mm,dd,hh,mi,ss就行了
end;
–timestamp类型的时间也可以用同样的方法,但是这只能精确到秒,后面的毫秒就忽略掉了
2.计算timestamp类型的时间差
用to_char函数不能拆分出毫秒来.可以用另外一个函数extract
示例
declare
v_t timestamp;
v_year int;
v_s float;
begin
v_t := systimestamp;
v_year := extract(year from v_t);
–月,日,小时,分的拆分方法和上面的年一样只要把year改成month,day,hour,minute就行.
v_s :=extract(second from v_t);–注意,这里虽然也只能拆分到秒,但这里的秒是带小数点的,小数点后面的就是毫秒了.
end;
摘自 聪明的笨蛋
文章归档
- 2021年11月 (79)
- 2021年10月 (102)
- 2021年9月 (77)
- 2021年8月 (97)
- 2021年7月 (94)
- 2021年6月 (92)
- 2021年5月 (72)
- 2021年4月 (114)
- 2021年3月 (91)
- 2021年2月 (84)
- 2021年1月 (94)
- 2020年12月 (94)
- 2020年11月 (83)
- 2020年10月 (90)
- 2020年9月 (84)
- 2020年8月 (101)
- 2020年7月 (100)
- 2020年6月 (85)
- 2020年5月 (97)
- 2020年4月 (93)
- 2020年3月 (99)
- 2020年2月 (79)
- 2020年1月 (102)
- 2019年12月 (87)
- 2019年11月 (106)
- 2019年10月 (100)
- 2019年9月 (102)
- 2019年8月 (88)
- 2019年7月 (90)
- 2019年6月 (94)
- 2019年5月 (99)
- 2019年4月 (97)
- 2019年3月 (86)
- 2019年2月 (90)
- 2019年1月 (94)
- 2018年12月 (116)
- 2018年11月 (9)