TIMESTAMP型別的時區
Oracle的TIMESTAMP型別比DATE型別不只是多了一個毫秒資訊,TIMESTAMP型別還包括一個時區的資訊。
看看SYSTIMESTAMP型別:
SQL> SELECT SYSTIMESTAMP FROM DUAL;
SYSTIMESTAMP
-----------------------------------------------
07-3月 -09 11.30.02.125000 下午 +08:00
在SYSTIMESTAMP結果的最後部分的+08:00,就是TIMESTAMP型別的時區資訊。由於資料庫伺服器選擇了北京時間,也就是東8區,所以這裡顯示的是+08:00。
時區對應的日期標識分別是TZH和TZM,表示時區的小時和時區的分鐘資訊:
SQL> SELECT TO_TIMESTAMP_TZ('2009-3-7 23:15:23.23 +04:00',
2 'YYYY-MM-DD HH24:MI:SS.FF TZH:TZM')
3 FROM DUAL;
TO_TIMESTAMP_TZ('2009-3-723:15:23.23+04:00','YYYY-MM-DDHH24:MI:SS.FFTZH:TZM
---------------------------------------------------------------------------
07-3月 -09 11.15.23.230000000 下午 +04:00
除了這種數值表示之外,時區還可以用文字來表示,V$TIMEZONE_NAMES檢視中包括資料庫支援的所有的時區名稱以及其對應的簡稱。
SQL> COL TZNAME FORMAT A40
SQL> COL TZABBREV FORMAT A30
SQL> SELECT * FROM V$TIMEZONE_NAMES
2 WHERE ROWNUM < 20;
TZNAME TZABBREV
---------------------------------------- -----------------------
Africa/Algiers LMT
Africa/Algiers PMT
Africa/Algiers WET
Africa/Algiers WEST
Africa/Algiers CET
Africa/Algiers CEST
Africa/Cairo LMT
Africa/Cairo EET
Africa/Cairo EEST
Africa/Casablanca LMT
Africa/Casablanca WET
Africa/Casablanca WEST
Africa/Casablanca CET
Africa/Ceuta LMT
Africa/Ceuta WET
Africa/Ceuta WEST
Africa/Ceuta CET
Africa/Ceuta CEST
Africa/Djibouti LMT
已選擇19行。
Oracle提供了一個函式TZ_OFFSET可以返回一個時區名稱對應的數值型別的時區範圍:
SQL> SELECT TZNAME, TZABBREV, TZ_OFFSET(TZNAME)
2 FROM V$TIMEZONE_NAMES
3 WHERE ROWNUM < 20;
TZNAME TZABBREV TZ_OFFS
---------------------------------------- ------------------------------ -------
Africa/Algiers LMT +01:00
Africa/Algiers PMT +01:00
Africa/Algiers WET +01:00
Africa/Algiers WEST +01:00
Africa/Algiers CET +01:00
Africa/Algiers CEST +01:00
Africa/Cairo LMT +02:00
Africa/Cairo EET +02:00
Africa/Cairo EEST +02:00
Africa/Casablanca LMT +00:00
Africa/Casablanca WET +00:00
Africa/Casablanca WEST +00:00
Africa/Casablanca CET +00:00
Africa/Ceuta LMT +01:00
Africa/Ceuta WET +01:00
Africa/Ceuta WEST +01:00
Africa/Ceuta CET +01:00
Africa/Ceuta CEST +01:00
Africa/Djibouti LMT +03:00
已選擇19行。
這種字元型別的時區表示方法也是可以用在TIMESTAMP型別中的,其對應的日期標識為TZR:
SQL> SELECT TO_TIMESTAMP_TZ(
2 '2009-3-7 23:34:45.2134 Etc/GMT-8',
3 'YYYY-MM-DD HH24:MI:SS.FF TZR')
4 FROM DUAL;
TO_TIMESTAMP_TZ('2009-3-723:34:45.2134ETC/GMT-8','YYYY-MM-DDHH24:MI:SS.FFTZ
---------------------------------------------------------------------------
07-3月 -09 11.34.45.213400000 下午 ETC/GMT-8
SQL> SELECT TO_CHAR(
2 TO_TIMESTAMP_TZ(
3 '2009-3-7 23:34:45.2134 Etc/GMT-8',
4 'YYYY-MM-DD HH24:MI:SS.FF TZR'),
5 'YYYY-MM-DD HH24:MI:SS.FF TZH:TZM')
6 FROM DUAL;
TO_CHAR(TO_TIMESTAMP_TZ('2009-3-723:
------------------------------------
2009-03-07 23:34:45.213400000 +08:00
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/4227/viewspace-563216/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- MySQL資料庫中的timestamp型別與時區MySql資料庫型別
- Sybase的timestamp型別型別
- oracle的timestamp型別使用Oracle型別
- Oracle中的TIMESTAMP型別Oracle型別
- TIMESTAMP的時區轉換
- 輸入TIMESTAMP型別型別
- Timestamp型別淺析型別
- (轉)PLS_INTEGER型別與timestamp型別、date、及時間函式型別函式
- 將timestamp型別轉換為date型別型別
- mysql 資料型別TIMESTAMPMySQL 資料型別
- date、timestamp欄位型別型別
- Sqlserver:timestamp資料型別SQLServer資料型別
- ORACLE TIMESTAMP資料型別Oracle資料型別
- timestamp資料型別求差資料型別
- Oracle中的TIMESTAMP資料型別Oracle資料型別
- timestamp型別的加減運算型別
- timestamp with local time zone型別和timestamp with time zone型別
- ORACLE DATE型別和TIMESTAMP型別DUMP換算Oracle型別
- Oracle中Date和Timestamp的區別Oracle
- Toad 與 timestamp 型別的問題?型別
- 關於timestamp資料型別資料型別
- MySQL中datetime和timestamp的區別MySql
- MySQL 的 timestamp 和 datetime 型別比較MySql型別
- date和timestamp型別之間的轉換型別
- oracle中date資料型別與timestamp資料型別的轉換Oracle資料型別
- MySQL 5.6 timestamp和datetime區別MySql
- 修改全域性變數時,可變型別和不可變型別的區別變數型別
- oracle資料型別date和timestamp的轉化Oracle資料型別
- 將TIMESTAMP型別的差值轉化為秒的方法型別
- 值型別與引用型別的區別型別
- Mysql日期(DATE, TIME, DATETIME, TIMESTAMP)型別的比較MySql型別
- oracle將表中date資料型別修改為timestamp資料型別Oracle資料型別
- C#插入Oracle中Timestamp型別資料C#Oracle型別
- Sybase datetime型別對映為Oracle timestamp型別Oracle
- mysql資料庫時間型別datetime、bigint、timestamp的查詢效率比較MySql資料庫型別
- c#中值型別和引用型別的區別C#型別
- ORACLE DATE和TIMESTAMP資料型別的比較(一) (轉)Oracle資料型別
- ORACLE DATE和TIMESTAMP資料型別的比較(二) (轉)Oracle資料型別