开发中总会遇到很奇怪的现象,时间类型被定义为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时注意!