如何从Oracle interval类型值中提取毫秒数?
从Oracle INTERVAL类型中提取毫秒数
要从Oracle的INTERVAL DAY TO SECOND类型值中提取四舍五入后的整数毫秒数,可通过以下方法实现:
核心方法
利用INTERVAL类型秒部分的小数位(对应微秒),提取后转换为毫秒并四舍五入。
示例SQL
针对你提供的示例值'+000000000 00:12:59.144721',执行以下语句即可得到结果145:
SELECT ROUND(MOD(EXTRACT(SECOND FROM INTERVAL '+000000000 00:12:59.144721' DAY TO SECOND), 1) * 1000) AS milliseconds FROM dual;
分步说明
EXTRACT(SECOND FROM interval_val):提取INTERVAL中的秒部分,结果包含整数和小数(示例中为59.144721)。MOD(..., 1):截取秒数的小数部分(示例中得到0.144721)。* 1000:将微秒单位转换为毫秒(示例中得到144.721)。ROUND(...):对毫秒数进行四舍五入,得到整数结果(示例中得到145)。
表字段通用查询
如果INTERVAL值存储在表字段中(例如表your_table的interval_col字段),可使用:
SELECT ROUND(MOD(EXTRACT(SECOND FROM interval_col), 1) * 1000) AS milliseconds FROM your_table;
内容的提问来源于stack exchange,提问作者DZN
相关产品推荐
相关产品推荐

