Oracle问题——时间与时间戳互转(SQL)

开发中总会遇到很奇怪的现象,时间类型被定义为Number类型,很不解,根据SQL执行的结果,怎么才能一眼就看出时间戳代表的时间呢?这个时候就需要我们改造一下SQL了,对时间戳直接转换为时间。时间戳是某一时间点距离1970年1月1日早上八点的毫秒数或者秒数,根据这一规则我们可以计算出来时间戳,也可以根据时间戳算出某一时间点:具体SQL如下:

时间戳转换为时间字符串:

SELECT TO_CHAR(a.create_date / (24 * 60 * 60) + to_date('1970-01-01 08:00:00','YYYY-MM-DD HH:MI:SS', 'YYYY-MM-DD HH: MI:SS')) FROM TABLE_NAME;

时间转换为时间戳与之相反,先算时间差,然后乘以每天的秒数:

select to_number((to_date('2017/3/31 17:01:01','yyyy/mm/dd hh24:mi:ss')-to_date('1970-01-01 08:00:00','yyyy/mm/dd hh24:mi:ss')) * 24 * 60 * 60 ,'fm9999999999' from dual;

 

单位是秒时时间戳是10位,

单位是毫秒时时间戳是13位、to_number时注意!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ddm01

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值