中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Oracle 日期和時間的存儲于處理

發布時間:2020-06-16 00:13:00 來源:網絡 閱讀:1861 作者:kuchensheng 欄目:數據庫

本章內容包括:

  • 處理并存儲一個特定的日期和時間。DATE類型可以存儲世紀、4位年份、月、日、時、分和秒

  • 使用時間戳timestamp,時間戳可以存儲一個特定的日期和時間。時間戳的優點是可以存儲帶有小數位的秒,還可以存儲時區

  • 使用時間間隔interval,時間間隔可以存儲時間的長度。如1年零3個月等。

在Oracle數據庫中,默認情況下,日期以DD-MON-YYYY格式保存到數據庫中,其中:

  • DD是一個兩位的天數

  • MON是月份中的前三個字母,如FEB

  • YYYY是一個4位的年份。

默認情況下數據庫以DD-MON-YY格式返回日期,其中YY是年份的最后兩位。

1、使用TO_DATE()和TO_CHAR()轉換時間值。

    TO_CHAR(x[,format])用于將時間值x轉化為字符串,該函數提供一個可選參數format來說明x的格式。

SQL> select sysdate from dual;
SYSDATE
-----------
2016/6/9 12
SQL> select to_char(sysdate,'YYYY-MM-DD HH24:MI:SS') from dual;
TO_CHAR(SYSDATE,'YYYY-MM-DDHH2
------------------------------
2016-06-09 12:32:28
SQL> select to_char(sysdate) from dual;
TO_CHAR(SYSDATE)
----------------
09-6月 -16

    TO_DATE(x[,format])用于將字符串x轉化為時間值,該函數可以指定一個可選字符串format參數來說明x的格式。如果沒有指定format參數,日期就是用默認的數據庫格式。x的格式要與format指定的格式一樣。

SQL> select to_char(to_date('05-6月-2016 12:38:23','DD-MON-YYYY HH24:MI:SS'),'HH24:MI:SS') as time
  2  from dual;
TIME
--------
12:38:23

    設置默認的日期格式。默認的日期格式是在數據庫參數NLS_DATE_FORMAT中指定的。可以用下面的語句來修改。

SQL> alter session set nls_date_format = 'YYYY-MM-DD';
Session altered

 2、使用時間值函數

    時間值函數用于獲取或處理時間值和時間戳。

函數
說明
ADD_MONTHS(x,y)
返回x加上y個月后的結果,如果y是負數,就從x中減去y個月
LAST_DAY(x)
返回包含x的月的最后一天
MONTHS_BETWEEN(x,y)
返回x和y之間有幾個月。如果x>y返回正數,否則返回負數。
NEXT_DAY(x,day)
返回從x開始,到下個day的時間值;day是一個文本字符串
ROUND(x[,unit])
對x取整。

SYSDATE

返回數據庫服務器所在的操作系統中設置的當前時間值
TRUNC(x[,unit])
對x進行截斷。默認情況下,x被截斷為當天的開始時間。
SQL> select sysdate from dual;
SYSDATE
-----------
2016/6/9 12
SQL> select add_months(sysdate,1) from dual;
ADD_MONTHS(SYSDATE,1)
---------------------
2016/7/9 12:52:03
SQL> select add_months(sysdate,-1) from dual;
ADD_MONTHS(SYSDATE,-1)
----------------------
2016/5/9 12:52:15
SQL> select last_day(to_char(sysdate)) from dual;
LAST_DAY(TO_CHAR(SYSDATE))
--------------------------
2016/6/30
SQL> select months_between('09-06月-2016','08-10月-2016') from dual;
select months_between('09-06月-2016','08-10月-2016') from dual
ORA-01861: 文字與格式字符串不匹配
SQL> select months_between('2016-06-09','2016-10-08') from dual;
MONTHS_BETWEEN('2016-06-09','2
------------------------------
             -3.96774193548387
SQL> select months_between('2016-10-09','2016-06-09') from dual;
MONTHS_BETWEEN('2016-10-09','2
------------------------------
                             4

3、使用時間戳

    CURRENT_TIMESTAMP、LOCALTIMESTAMP、SYSTIMESTAMP返回當前回話的日期和時間以及時區

    EXTRACT 從時間戳類型或者DATE類型中提取并返回年月日時分秒或時期

    TO_TIMESTAMP(x[,format])用于將字符串x轉化為一個TIMESTAMP類型,format指定轉化類型

4、使用時間間隔INTERVAL

    舉例:優惠券有效期,打折促銷的時間

類型
說明
INTERVAL_YEAR[(years_option)] TO_MONTH
存儲一個時間間隔,其單位是年和月;可以通過years_option參數來指定年的精確度,默認精度是2,意思是可以在時間間隔中為年數存儲兩位數字。如果試圖向表中添加年數超過INTERVAL_YEAR TO MONTH列可以存儲的記錄,就會返回一個錯誤。時間間隔既可以存儲正數,也可以存儲負數
INTERVAL_DAY[(days_option)] TO_SECOND[(seconds_precision)]
存儲一個時間間隔,其單位是天和秒;可以動過指定可選的days_precision參數來指定天的精度,該參數是一個0~9的整數。默認值是2。

    使用INTERVAL_YEAR TO MONTH類型

        創建表coupons用來存儲優惠券信息。duration用來記錄優惠券有效的時間間隔。

SQL> create table coupons(
  2  coupon_id integer constraint coups_pk primary key,
  3  name varchar2(30) not null,
  4  duration INTERVAL YEAR(3) TO MONTH
  5  );
Table created

    要想數據庫提供一個INTERVAL YEAR TO MONTH字面值,可以使用以下語法:

INTERVAL '[+|-][y][-m]' [YEAR[(years_precisiion)]] [TO_MONTH]

    示例:

時間間隔字面量
說明
INTERVAL '1' YEAR

INTERVAL '11' MONTH
時間間隔11個月(14>12 == 1年零2個月)
INTERVAL '1-3' YEAR TO MONTH
時間間隔為1年零3個月
INTERVAL '0-5' YEAR TO MONTH
時間間隔為0年5個月
INTERVAL '-1-5' YEAR TO MONTH
時間間隔為負數,值為1年零5個月


SQL> INSERT INTO coupons(coupon_id,name,duration)
  2  values(1,'$1 off Z Files',INTERVAL '1' YEAR);
1 row inserted

SQL> INSERT INTO coupons(coupon_id,name,duration)
  2  values(2,'$2 off Pop 3',INTERVAL '11' MONTH);
1 row inserted

SQL> INSERT INTO coupons(coupon_id,name,duration) values(3,'$2 off Pop 31',INTERVAL '2' MONTH);
1 row inserted
SQL> select * from coupons;
                              COUPON_ID NAME                           DURATION
--------------------------------------- ------------------------------ -------------------------------------------------------------------------------
                                      1 $1 off Z Files                 +001-00
                                      2 $2 off Pop 3                   +000-11
                                      3 $2 off Pop 31                  +000-02

   

    


向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

富平县| 盐池县| 睢宁县| 台湾省| 千阳县| 镇沅| 靖远县| 锡林浩特市| 军事| 永福县| 海门市| 广河县| 周宁县| 托里县| 枣阳市| 嘉峪关市| 巫溪县| 海伦市| 全州县| 博野县| 菏泽市| 额敏县| 翁牛特旗| 广水市| 大荔县| 逊克县| 辽源市| 芜湖县| 唐河县| 方城县| 海城市| 利辛县| 东丽区| 泸水县| 越西县| 潜江市| 明水县| 内江市| 新建县| 澄城县| 福州市|