oracle个人小结(时间操作)

--返回当前系统时间(windows一般为北京时间即cst)
SELECT sysdate FROM DUAL (或者 select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') from dual;)

--无效数字(日期类型,不能直接加减乘除)
SELECT to_number(sysdate) FROM DUAL

 

--两个日期相减到的是数字,单位是天
--结果为0.5
SELECT
TO_DATE('2019-08-01 00:00:00', 'YYYY-MM-DD HH24:MI:SS') - TO_DATE('2019-07-31 12:0:0', 'YYYY-MM-DD HH24:MI:SS')
FROM DUAL

 

--日期转换毫秒
--本质就是计算它的GMT(格林尼治时间),即该从109700101开始到现在的毫秒数,因为我们用的东八区,所以要多减去8个小时
-- 结果1564617600000
SELECT
TO_NUMBER(TO_DATE('2019-08-01 8:00:00', 'YYYY-MM-DD HH24:MI:SS') - TO_DATE('1970-01-01 8:0:0', 'YYYY-MM-DD HH24:MI:SS')) * 24 * 60 * 60 * 1000
FROM DUAL;

 

--毫秒转换为日期
--即求从毫秒的天数加上19700101的时间
--结果2019-08-01 08:00:00
SELECT TO_CHAR(1564617600000 / (1000 * 60 * 60 * 24) +
TO_DATE('1970-01-01 08:00:00', 'YYYY-MM-DD HH:MI:SS'), 'YYYY-MM-DD HH24:MI:SS') AS CDATE
FROM DUAL;

--这个报错

--数据类型,不一致,应为number 却得date(日期类型,不能直接加减乘除)

select to_date('2019-08-01 00:00:00','YYYY-MM-DD HH24:MI:SS')/86400 from dual

 

几个时间简介

1 UTC(世界标准时间)
协调世界时,又称世界标准时间或世界协调时间,
简称UTC(从英文“Coordinated Universal Time”/法文“TempsUniversel Coordonné”而来),
是最主要的世界时间标准,其以原子时秒长为基础,在时刻上尽量接近于格林尼治标准时间。

2 GMT(格林尼治平时)
格林尼治平时(又称格林尼治平均时间或格林尼治标准时间,旧译格林威治标准时间;
英语:Greenwich MeanTime,GMT)是指位于英国伦敦郊区的皇家格林尼治天文台的标准时间,因为本初子午线被定义在通过那里的经线。
理论上来说,格林尼治标准时间的正午是指当太阳横穿格林尼治子午线时(也就是在格林尼治上空最高点时)的时间。
由于地球在它的椭圆轨道里的运动速度不均匀,这个时刻可能与实际的太阳时有误差,最大误差达16分钟。
由于地球每天的自转是有些不规则的,而且正在缓慢减速,因此格林尼治时间已经不再被作为标准时间使用。
现在的标准时间,是由原子钟报时的协调世界时(UTC)。(该时间的从19700101开始计算)

3 CST(北京时间)
北京时间,China Standard Time,中国标准时间。在时区划分上,属东八区,比协调世界时早8小时,记为UTC+8。
不过这个CST这个缩写比较纠结的是它可以同时代表四个不同的时间:
Central Standard Time (USA) UT-6:00
Central Standard Time (Australia) UT+9:30
China Standard Time UT+8:00
Cuba Standard Time UT-4:00

计算机、UNIX、Linux、Java等的时间  都是从1970年1月1日开始计算

posted @ 2019-08-29 09:51  爱跳舞的程序员  阅读(367)  评论(0编辑  收藏  举报