天天看點

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日開始計算