對于大多數(shù)數(shù)據(jù)庫,這些值都是-07:00之類的偏移值
創(chuàng)新互聯(lián)公司專業(yè)為企業(yè)提供包河網(wǎng)站建設、包河做網(wǎng)站、包河網(wǎng)站設計、包河網(wǎng)站制作等企業(yè)網(wǎng)站建設、網(wǎng)頁設計與制作、包河企業(yè)網(wǎng)站模板建站服務,10多年包河做網(wǎng)站經(jīng)驗,不只是建網(wǎng)站,更提供有價值的思路和整體網(wǎng)絡服務。
因此對于NEW_TIME函數(shù)是沒有用的。Oracle9i有關NEW_TIME的文檔建議使用FROM_TZ來替代,但是這可能會產(chǎn)生誤導。FROM_TZ只將一個時區(qū)應用到一個時間戳上;它并不能把一個時區(qū)轉(zhuǎn)換成另外一個時區(qū)。
時間戳的概念:它是一種時間表示方式,定義為從格林威治時間1970年01月01日00時00分00秒(北京時間1970年01月01日08時00分00秒)起至現(xiàn)在的總秒數(shù)。
下圖是從linux系統(tǒng)中獲得當前時間戳的一種方式
在oracle使用時間戳,一般都是為了方便計算時間差的,我們要知道oracle中的date類型想減是不能友好的得到時間的差值的。所以使用時間戳來得到兩個時間差。
首先來看oracle中如何獲得當前時間的時間戳,我們用當前時間減去計算機元年后再經(jīng)過換算得到了的從1970年來到當前時間的時間戳,單位是微妙。
另外oracle提供了另一種便捷得到兩個時間差的方式,那就是使用timestamp數(shù)據(jù)類型,它類似date類型,但是存儲的時間更為精確,顯示的格式:yyyy-mm-dd hh24:mi:ss.ff AM,其中ff是小數(shù)秒。
timestamp類型的時間差可讀性也比上面那種好一些,可以直觀看出兩個時間差。
在oracle中,兩個date類型的數(shù)值想減也可以轉(zhuǎn)換成上述的timestamp可以的類型,這里就要介紹一個函數(shù):numtodsinterval(n,'x'),它能將一個數(shù)值轉(zhuǎn)換成timestamp那種格式的數(shù)據(jù)。但要注意:后面的參數(shù)'x'是取'day'、'minute'、'hour'完全取決于前面的單位,這樣才能獲得正確的時間差
最后我們介紹一個函數(shù)extract,該函數(shù)可以從timestamp類型的時間里抽取想要hour,minute等
oracle的服務器時間,是由服務器的系統(tǒng)時間控制的,所以要看服務器的具體類型,以windows 10和linux系統(tǒng)為例分別說明。
工具:windows 10、linux
windows 10操作步驟:
1、右鍵開始菜單,選擇控制面板。
2、找到日期和時間,點擊進入。
3、點擊更改日期和時間。
4、進入后,修改日期時間,保存即可。
linux下更改方法:
1、以root用戶登錄到指定服務器。
2、執(zhí)行命令
date -s '2017-07-11 23:58:00'
這是將系統(tǒng)時間修改為2017年7月11日23點58分00秒。
3、修改后,reboot重啟系統(tǒng)即可。
看MOS文檔 How To Change Timezone for 11gR2 Grid Infrastructure (文檔 ID 1209444.1)
AIX改時區(qū)必須重啟。
我是全部節(jié)點停止, stop crs,然后 disable crs 讓crs不自動啟動 , 然后改AIX的時區(qū),重啟,時區(qū)生效,改grid時區(qū),然后start crs 。
要改$GRID_HOME/crs/install/s_crsconfig_nodename_env.txt。
改時區(qū)沒有什么大問題,數(shù)據(jù)庫本身并不依賴時區(qū),建議看看 Timestamps time zones - Frequently Asked Questions (文檔 ID 340512.1)
吐槽一下,經(jīng)常有人安裝AIX的時候不注意選時區(qū)選擇到 BST(Bering) 以為是BEIST(Beijing)。