(Les16 Managing Data in Different Time Zones)[20171230]

来源:https://www.cnblogs.com/also-brook/archive/2017/12/31/8151680.html
-Advertisement-
Play Games

學習目標: -current_date 當前時間 TZ_OFFSET -current_timestamp 含小數秒當前時間 FROM_TZ -localtimestamp 含小數秒本地時間 TO_TIMESTAMP -dbtimezone 資料庫時區 TO_TIMSTAMP_TZ -session ...


學習目標:     -current_date 當前時間 TZ_OFFSET     -current_timestamp 含小數秒當前時間    FROM_TZ      -localtimestamp 含小數秒本地時間    TO_TIMESTAMP     -dbtimezone 資料庫時區    TO_TIMSTAMP_TZ     -sessiontimezone 回話時間時區    TO_YMINTERVAL     -extract 提取    TO_DSINTERVAL     TIME_ZONE會話參數     可以設定為以下值         -一個絕對偏移值         -資料庫時區         -系統本地時區         -一個區功能變數名稱稱              ALTER SESSION SET TIME_ZONE = '-06:00';         ALTER SESSION SET TIME_ZONE = dbtimezone;         ALTER SESSION SET TIME_ZONE = local;         ALTER SESSION SET TIME_ZONE = 'America/New_York';  
SYS@cqoraxt0>ALTER SESSION SET TIME_ZONE = dbtimezone;
Session altered.
SYS@cqoraxt0>select systimestamp from dual;
SYSTIMESTAMP
---------------------------------------------------------------------------
29-DEC-17 10.50.13.546588 PM +08:00 ->當前資料庫所在時區的時間
SYS@cqoraxt0>select localtimestamp from dual;
LOCALTIMESTAMP
---------------------------------------------------------------------------
29-DEC-17 02.50.38.464141 PM
SYS@cqoraxt0>ALTER SESSION SET TIME_ZONE = dbtimezone;
Session altered.
SYS@cqoraxt0>select localtimestamp from dual;
LOCALTIMESTAMP
---------------------------------------------------------------------------
29-DEC-17 02.50.49.337510 PM
SYS@cqoraxt0>ALTER SESSION SET TIME_ZONE = '-06:00';
Session altered.
SYS@cqoraxt0>select localtimestamp from dual;
LOCALTIMESTAMP
---------------------------------------------------------------------------
29-DEC-17 08.51.00.307601 AM->絕對偏移量的時區
SYS@cqoraxt0>ALTER SESSION SET TIME_ZONE = local;
Session altered.
SYS@cqoraxt0>select localtimestamp from dual;
LOCALTIMESTAMP
---------------------------------------------------------------------------
29-DEC-17 10.51.11.989536 PM->系統本地時間時區
SYS@cqoraxt0>ALTER SESSION SET TIME_ZONE = 'America/New_York';
Session altered.
SYS@cqoraxt0>select localtimestamp from dual;
LOCALTIMESTAMP
---------------------------------------------------------------------------
29-DEC-17 09.51.21.599491 AM ->指定時間區功能變數名稱稱 
      CURRENT_DATE,CURRENT_TIMESTAMP,LOCALTIMESTAMP             -CURRENT_DATE 當前時間同sysdate表達一樣             -CURRENT_TIMESTAMP 含時區     -LOCALTIMESTAMP 不含時區                
col CURRENT_DATE format a30
            col SESSIONTIMEZONE format a20
            col CURRENT_TIMESTAMP format a40
            col LOCALTIMESTAMP format a40
            col sysdate format a30
            set linesize 300
            alter session set nls_date_format='YYYY-MM-DD HH24:MI:SS'; 
            --調整時間輸出的格式
            select sessiontimezone,current_date,current_timestamp,localtimestamp,sysdate from dual;
        
SESSIONTIMEZONE      CURRENT_DATE                   CURRENT_TIMESTAMP                        LOCALTIMESTAMP                           SYSDATE
-------------------- ------------------------------ ---------------------------------------- ---------------------------------------- ------------------------------
+08:00               2017-12-29 23:13:08            29-DEC-17 11.13.08.826336 PM +08:00      29-DEC-17 11.13.08.826336 PM             2017-12-29 23:13:08
 

 

    DBTIMEZONE,SESSIONTIMEZONE             -DBTIMEZONE 資料庫時區,也就是0時區             -SESSIONTIMEZONE 會話的當前時區           
  
            col SESSIONTIMEZONE format a20
            col sysdate format a30
            set linesize 300
            alter session set nls_date_format='YYYY-MM-DD HH24:MI:SS'; 
            --調整時間輸出的格式
            select dbtimezone,sessiontimezone,sysdate from dual;
DBTIME SESSIONTIMEZONE      SYSDATE
------ -------------------- ------------------------------
+00:00 +08:00               2017-12-29 23:16:04
 

 

TIMESTAMP 時間類型         -TIMESTAMP [(fractional_seconds_precision)] 包含:年,月,天,小時,分鐘,秒,時區小時,時區分鐘         -TIMESTAMP [(fractional_seconds_precision)] WITH TIME ZONE         -TIMESTAMP [(fractional_seconds_precision)] WITH LOCAL TIME ZONE              TIMESTAMP時間類型各個值的範圍              DATE,TIMESTAMP的不同點             -TIMESTAMP相比DATE多小數秒,時區小時和時區分鐘。  
create table time_t01(
id number,
t_date date default sysdate,
t_timestamp timestamp default current_timestamp
)
/
insert into time_t01 values(1,default,default);
/
col t_date format a30
col t_timestamp format a40
set linesize 300
alter session set nls_date_format='YYYY-MM-DD HH24:MI:SS';
--調整會話輸出時時間格式
select * from time_t01;
 
        ID T_DATE                         T_TIMESTAMP
---------- ------------------------------ ----------------------------------------
         1 2017-12-29 23:51:55            29-DEC-17 11.51.55.085972 PM
        
--添加一個欄位
alter
table time_t01 add (t_timestamp_zone timestamp with time zone); insert into time_t01 values(2,default,default,timestamp'2017-12-29 23:57:00 +8:00'); commit; insert into time_t01 values(3,default,default,timestamp'2017-12-29 23:57:00 America/New_York'); commit; insert into time_t01 values(4,default,default,timestamp'2017-12-29 23:57:00 -8:00'); commit; col t_timestamp_zone format a50 select * from time_t01; ID T_DATE T_TIMESTAMP T_TIMESTAMP_ZONE ---------- ------------------------------ ---------------------------------------- -------------------------------------------------- 1 2017-12-29 23:51:55 29-DEC-17 11.51.55.085972 PM 2 2017-12-29 23:57:39 29-DEC-17 11.57.39.696414 PM 29-DEC-17 11.57.00.000000 PM +08:00 3 2017-12-30 00:02:51 30-DEC-17 12.02.51.376596 AM 29-DEC-17 11.57.00.000000 PM AMERICA/NEW_YORK 4 2017-12-30 00:02:51 30-DEC-17 12.02.51.385169 AM 29-DEC-17 11.57.00.000000 PM -08:00 --添加一個欄位 alter table time_t01 add (t_timestamp_local_zone timestamp with local time zone); insert into time_t01 values(5,default,default,current_timestamp,current_timestamp); col t_timestamp_local_zone format a50 select * from time_t01 order by id; ID T_DATE T_TIMESTAMP T_TIMESTAMP_ZONE T_TIMESTAMP_LOCAL_ZONE ---------- ------------------------------ ---------------------------------------- -------------------------------------------------- -------------------------------------------------- 1 2017-12-29 23:51:55 29-DEC-17 11.51.55.085972 PM 2 2017-12-29 23:57:39 29-DEC-17 11.57.39.696414 PM 29-DEC-17 11.57.00.000000 PM +08:00 3 2017-12-30 00:02:51 30-DEC-17 12.02.51.376596 AM 29-DEC-17 11.57.00.000000 PM AMERICA/NEW_YORK 4 2017-12-30 00:02:51 30-DEC-17 12.02.51.385169 AM 29-DEC-17 11.57.00.000000 PM -08:00 5 2017-12-30 00:07:05 30-DEC-17 12.07.05.688410 AM 30-DEC-17 12.07.05.688410 AM +08:00 30-DEC-17 12.07.05.688410 AM 改變會話當前時區,timestamp with local time zone 時間也會跟著變動 SYS@cqoraxt0>alter session set time_zone='-09:00'; Session altered. SYS@cqoraxt0> select * from time_t01 order by id; ID T_DATE T_TIMESTAMP T_TIMESTAMP_ZONE T_TIMESTAMP_LOCAL_ZONE ---------- ------------------------------ ---------------------------------------- -------------------------------------------------- -------------------------------------------------- 1 2017-12-29 23:51:55 29-DEC-17 11.51.55.085972 PM 2 2017-12-29 23:57:39 29-DEC-17 11.57.39.696414 PM 29-DEC-17 11.57.00.000000 PM +08:00 3 2017-12-30 00:02:51 30-DEC-17 12.02.51.376596 AM 29-DEC-17 11.57.00.000000 PM AMERICA/NEW_YORK 4 2017-12-30 00:02:51 30-DEC-17 12.02.51.385169 AM 29-DEC-17 11.57.00.000000 PM -08:00 5 2017-12-30 00:07:05 30-DEC-17 12.07.05.688410 AM 30-DEC-17 12.07.05.688410 AM +08:00 29-DEC-17 07.07.05.688410 AM

    INTERVAL時間類型         -INTERVAL用於存儲兩個時間差         -年-月 Year-month    INTERVAL YEAR TO MONTH         -天-時間 Day-time     INTERVAL DAY TO SECOND           INTERVAL YEAR (year_precision) TO MONTH         INTERVAL DAY (day_precision) TO SECOND (fractional_seconds_precision)         

 

create table time_t02(
id number,
t_interval_y interval year to month,
t_interval_d interval day to second
)
/
insert into time_t02 values(1,'03-5' ,'05 12:00:00')
/
insert into time_t02 values(2,interval '04' year,interval '06 13:00:00' day to second )
/
insert into time_t02 values(3,interval '12' month,interval '07 14:00:00' day to second )
/
 
 
alter session set nls_date_format='YYYY-MM-DD HH24:MI:SS';
col t_interval_y format a30
col t_interval_d format a30
select * from time_t02;
 
        ID T_INTERVAL_Y                   T_INTERVAL_D
---------- ------------------------------ ------------------------------
         1 +03-05                         +05 12:00:00.000000
         2 +04-00                         +06 13:00:00.000000
         3 +01-00                         +06 13:00:00.000000
      EXTRACT 提取時間         -可提取時間類型             EXTRACT ([YEAR] [MONTH][DAY] [HOUR] [MINUTE][SECOND] [TIMEZONE_HOUR] [TIMEZONE_MINUTE] [TIMEZONE_REGION] [TIMEZONE_ABBR]                 -年、月、天、小時、分鐘、秒、時區小時、時區分鐘、時區區域、時區縮寫
set linezie 600
col zone_region format a20
col zone_abbr format a20
select
    extract(year from t_timestamp_zone) year,
    extract(month from t_timestamp_zone) month,
    extract(day from t_timestamp_zone) day,
    extract(hour from t_timestamp_zone) hour,
    extract(minute from t_timestamp_zone) minute,
    extract(second from t_timestamp_zone) second,
    extract(timezone_hour from t_timestamp_zone) zone_hour,
    extract(timezone_minute from t_timestamp_zone) zone_minute,
    extract(timezone_region from t_timestamp_zone) zone_region,
    extract(timezone_abbr from t_timestamp_zone) zone_abbr
    from time_t01
where id=3
/
            
                  YEAR      MONTH        DAY       HOUR     MINUTE     SECOND  ZONE_HOUR ZONE_MINUTE
---------- ---------- ---------- ---------- ---------- ---------- ---------- -----------
ZONE_REGION          ZONE_ABBR
-------------------- --------------------
      2017         12         30          4         57          0         -5           0
America/New_York     EST
      時區轉換函數         -TZ_OFFSET 時間區域轉為為數值             TZ_OFFSET ( ['time_zone_name'] '[+ | -] hh:mm' ]      [ SESSIONTIMEZONE] [DBTIMEZONE]  
SYS@cqoraxt0>select tz_offset('America/New_York') from dual;
TZ_OFFS
-------
-05:00
            V$TIMEZONE_NAMES所有時區區功能變數名稱稱視圖           -FROM_TZ 將TIMESTAMP轉換為TIMESTAMP WITH TIME ZONE             FROM_TZ(TIMESTAMP timestamp_value, time_zone_value)
SYS@cqoraxt0>select from_tz(timestamp '2017-12-30 23:50:00','+8:00') from dual;
FROM_TZ(TIMESTAMP'2017-12-3023:50:00','+8:00')
---------------------------------------------------------------------------
30-DEC-17 11.50.00.000000000 PM +08:00
        -TO_TIMESTAMP 將字元串轉為TIMESTAMP時間類型             TO_TIMESTAMP (char,[fmt],['nlsparam'])   
SYS@cqoraxt0>select to_timestamp('2017-12-30 23:53:00','YYYY-MM-DD HH24:MI:SS') from dual;
TO_TIMESTAMP('2017-12-3023:53:00','YYYY-MM-DDHH24:MI:SS')
---------------------------------------------------------------------------
30-DEC-17 11.53.00.000000000 PM

 

        -TO_TIMESTAMP_TZ 將字元串轉為TIMESTAMP WITH TIME ZONE             TO_TIMESTAMP_TZ (char,[fmt],['nlsparam'])  
SYS@cqoraxt0>select to_timestamp_tz('2017-12-30 23:55:00 +8:00','YYYY-MM-DD HH24:MI:SS TZH:TZM') from dual;
           TO_TIMESTAMP_TZ('2017-12-3023:55:00+8:00','YYYY-MM-DDHH24:MI:SSTZH:TZM')
---------------------------------------------------------------------------
30-DEC-17 11.55.00.000000000 PM +08:00 
        -TO_YMINTERVAL 將字元串轉為時間間隔類型INTERVAL YEAR TO MONTH             TO_YMINTERVAL(char)          
 SYS@cqoraxt0>select sysdate+to_yminterval('01-01') from  dual;
SYSDATE+TO_YMINTERV
-------------------
2019-01-31 00:03:14
 

        -TO_DSINTERVAL 將字元串轉為時間間隔類型INTERVAL DAY TO SECOND

            TO_DSINTERVAL(char)           
 SYS@cqoraxt0>select sysdate+to_dsinterval('05 1:00:00') from dual;
            SYSDATE+TO_DSINTERV
            -------------------
            2018-01-05 01:06:57

學習總結:         1.5個時間current_date、current_timestamp、localtimestamp、dbtimezone、sessionzone         2.時區值的更改及對應可選值資料庫時區、系統時區、偏移量值、時區區功能變數名稱稱         3.時間類型:DATE ,TIMESTAMP,TIMESTAMP WITH TIME ZONE ,TIMESTAMP WITH LOCAL TIME ZONE,INTERVAL YEAR TO MONTH,INTERVAL DAY TO SECOND         4.時間類型中的各個值的提取函數EXTRACT         5.時間類型的轉換函數TO_DATE,TZ_OFFSET,FROM_TZ,TO_TIMESTAMP,TO_TIMSTAMP_TZ,TO_YMINTERVAL,TO_DSINTERVAL






您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • DataTable轉List public static List<T> ToListModel<T>(this DataTable table) where T : new() { var type = typeof(T); var properties = type.GetProperties( ...
  • 3day Python基礎語法 1、運算符:算數運算符、比較運算符、賦值運算符、邏輯運算符 A、算數運算符:a=10,b=3 + 加 a+b - 減 a-b * 乘 a*b / 除 a/b %取模 a%b (取餘數) //取整數 a//b (取商的整數部分) **冪 a**b (a的b次方) B、比 ...
  • 1,首先需要在一臺有MacOS系統,在Apple stroe下載MacOS High Sierra安裝程式; 2,準備一個至少8G容量的U盤; 3,打開 “應用程式 → 實用工具 → 磁碟工具”,將U盤「抹掉」(格式化) 成「Mac OS X 擴展(日誌式)」 格式、GUID 分區圖,並將U盤命名為 ...
  • python ./setup.py install --record install.txt cat install.txt | xargs rm -rf ...
  • 硬體:pixhawk 2.4.8 代碼:2017/12/30 PX4 firemare px4fmuv2 MCU: STM32F427VIT6, STN32F103C8T6. 感測器: MPU6000; L3GD20; LSM303D; MS5611, 省略了一個L3GD20焊盤. CAN口用的是M ...
  • fxml文件使用SceneBuilder打開報錯 解決方法:Window-->Preferences-->JavaFX-->browse 路徑是可執行的JavaFX Scene Builder文件,例如:C:\Program Files (x86)\Oracle\JavaFX Scene Build ...
  • 作者 彭東林 QQ 405728433 平臺 Linux-4.10.17 Qemu-2.8 + vexpress-a9 DDR:1GB 參考 Linux 虛擬記憶體和物理記憶體的理解 Linux進程分配記憶體的兩種方式--brk() 和mmap() Linux中的mmap的使用 程式(進程)記憶體分佈 解析 ...
  • 部署Flask項目到騰訊雲伺服器CentOS7 安裝git 安裝依賴包 支持SSL傳輸協議 解壓功能 C語言解析XML文檔的 安裝gdbm資料庫 實現自動補全功能 sqlite資料庫: 安裝python3.6 下載python 創建目錄 下載編譯python的c和c++: 配置: 編譯: 備份(重命 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...