中文字幕在线一区二区在线,久久久精品免费观看国产,无码日日模日日碰夜夜爽,天堂av在线最新版在线,日韩美精品无码一本二本三本,麻豆精品三级国产国语,精品无码AⅤ片,国产区在线观看视频

      Oracle認證:過去、現在及日期的差

      時間:2024-10-24 08:33:14 Oracle認證 我要投稿
      • 相關推薦

      Oracle認證:過去、現在及日期的差

        一、日期算法

        1、sysdate、current_date及systimestamp

        Oracle使用計算機操作系統的當前日期和時間,是通過sysdate函數實現的,在任何可以使用Oracle函數的其它地方都可以使用sysdate函數,可以將它視為每個表的一個隱藏列或者偽列。

        select sysdate from dual;

        結果:2013/12/22 19:14:21

        current_date 返回的是當前會話的時區的系統日期,我們平時用的都是東八區,如果將當前會話時間修改成東九區試試:

        alter session set time_zone='+09:00';

        select current_date,sysdate from dual

        結果:2013/12/24 20:27:332013/12/24 19:27:32

        通過例子我們也看到它倆的區別了。

        還有一個函數systimestapm,它返回的是本機的系統時間(包含微秒和時區),它跟會話的時區無關

        select systimestamp from dual

        結果:24-12月-13 07.34.37.042000 下午 +08:00

        2、兩個日期的差

        兩個日期可以直接進行加減,返回的數值單位是天,也可以用一個日期加減某個數值代表N天后(前)

        比如十天后發工資,那么十天后是那一天呢?

        select sysdate+10 from dual

        結果:2014/1/1 19:38:19

        再比如今天除夕是2014-01-30,那么距離過年還有哪個多少天呢

        select to_date('2014-01-30','yyyy-MM-dd') -sysdate from dual

        結果:38.1794097222222

        暈,還有一個多月才能過年呢啊

        3、添加月份、減少月份

        用的都是add_months

        查詢一下三個月后、三個月前分別是哪一天:

        select add_months(sysdate,3),add_months(sysdate,-3) from dual

        結果:2014/3/22 19:47:182013/9/22 19:47:18

        添加年份、減少年份就不用說了,直接在數值上乘以12就可以推算N年前、N年后是哪一天

        4、greatest和least

        這兩個函數在介紹數值函數的時候提到過,在數值函數中分別代表取一組數值中的最大值和最小值。

        這哥倆在日期函數中也有應用,greatest是從一組日期數據中取距離當前最近的日期,least是在一組日期中選擇最早的日期。

        select greatest(to_date('2013-11-11','yyyy-MM- dd'),to_date('2013-12-11','yyyy-MM-dd'),to_date('2014-01-05','yyyy-MM- dd'),to_date('2013-11-11','yyyy-MM-dd')) from dual

        結果:12013/1/5

        select least(to_date('2013-11-11','yyyy-MM- dd'),to_date('2013-12-11','yyyy-MM-dd'),to_date('2014-01-05','yyyy-MM- dd'),to_date('2013-11-11','yyyy-MM-dd')) from dual

        結果:12013/11/11

        注意:這里必須用to_date對字符串進行轉化,否則會把他們無法判斷是否為日期格式,只能當成字符串去處理。容易出現結果錯誤的情況。

        5、next_day 代表從指定日期開始算,下周幾是哪一天

        select next_day(to_date('2013-12-23','yyyy-MM-dd'),2) from dual

        結果:2013/12/30

        需要注意的是:這里的2代表的是周一,而不是周二。 1234567 分別代表 周日、周一……周六。

        6、last_day 計算某個月的最后一天是哪天?

        select last_day(sysdate) from dual

        結果:2013/12/31 20:46:07

        7、months_between 計算兩個日期之間相差的月份數,返回結果可能帶小數

        計算下自己的周歲:

        select floor(months_between(sysdate ,to_date('1990-08-24','yyyy-MM-dd'))/12) from dual

        結果:23

        8、組合日期函數 : 多個日期函數組合使用

        舉例:2013年10月28日入職新公司,倆月試用期,新員工過了試用期后的每月第一天可以做轉正報告。 那10月28日入職的什么時候做轉正報告:

        select last_day(add_months(to_date('2013-10-28','yyyy-MM-dd'),2))+1 from dual

        結果:2014/1/1

        思路:先用add_months計算倆月后是哪一天,再用last_day計算那個月的最后一天,再+1代表下個月的第一天。

        二、使用to_date 和 to_char設置日期時間格式

        1、基本使用

        to_date 和 to_char兩個函數的作用是相反的,但是用法很類似

        to_date是將字符串轉換為時間格式 to_char是將日期轉換為字符串格式

        這兩個函數我們平時用的實在是太多了,先寫倆例子吧,然后再說其他的:

        select to_date('2013-11-11 12:01:14','yyyy-MM-dd HH:MI:SS') FROM DUAL

        結果:2013/11/11 12:01:14

        select to_char(sysdate , 'yyyy-MM-dd HH:MI:SS') from dual;

        結果:2013-12-22 09:37:48

        to_char的時候可以在format參數中插入字符串,以雙引號的方式插入:

        select to_char(sysdate , 'yyyy"年"MM"月"dd"日"') from dual;

        結果:2013年12月22日

        2、最常見的to_char錯誤

        就是MM代表的是月份 MI代表隊 是分鐘 不要弄混了,由于Oracle中支持的時間很靈活,所以這塊弄混了他不會提示你的。

        select to_char(sysdate ,'yyyy-MI-dd hh:mm:ss') from dual

        結果:2013-45-22 09:12:15

        出現這樣的錯誤就很悲催了,好在分鐘是45還能容易發現, 要是1-12之內的,要從結果發現錯誤也不容易。

        3、to_date 不僅可以接受字符串的參數,還可以接受數值類型的參數:

        select to_date(20131222,'yyyy-MM-dd') from dual

        結果:2013/12/22

        4、new_time 切換時區

        new_time(date,'this','other')

        三個參數:date代表的是this時區的時間,'this'代表的是是用三個字母組成的縮寫代替,代表當前時區,'other'也是用三個字母組成的縮寫代替,表示其他時區。

        舉例:查一下'2014-10-01 12:00:00'這個時間在北京和夏威夷的時間分別是多少

        select to_date('2014-10-01 12:00:00','yyyy-MM-dd hh24:mi:ss'),new_time(to_date('2014-10-01 12:00:00','yyyy-MM-dd hh24:mi:ss'),'EST','HST') FROM DUAL

        結果:2014/10/1 12:00:002014/10/1 7:00:00

        應該不會常用,了解下就行了。

        三、EXTRACT

        EXTRACT可用來代替to_char函數來選擇日期值中的某一部分(如從一個日期中選擇月份和天)

        SELECT EXTRACT(YEAR FROM SYSDATE) FROM DUAL;

        SELECT EXTRACT(MONTH FROM SYSDATE) FROM DUAL;

        SELECT EXTRACT(DAY FROM SYSDATE) FROM DUAL;

        結果:

        2013

        12

        22

        注意:EXTRACT抽取年月日部分和抽取時分部分是不同的,抽取時分的時候

        SELECT EXTRACT(hour FROM TIMESTAMP '2013-12-22 22:34:12') FROM DUAL;

        SELECT EXTRACT(minute FROM TIMESTAMP '2013-12-22 22:34:12') FROM DUAL;

        結果:

        22

        34

        而且如果將'2013-12-22 22:34:12'用to_date轉換成日期格式還報錯,真讓我想不通

        再說了這個函數的存在有毛用呢?至今沒想明白,用to_char完全可以實現它的功能啊

        select to_char(sysdate ,'yyyy') from dual;

        select to_char(sysdate ,'HH') from dual

        結果:2013

        10

        四、使用TIMESTAMP類型

        DATE 在數據類型存儲精確到秒的日期和時間,二TIMESTAMP數據類型存儲精確到十億分之一秒的日期。

      【Oracle認證:過去、現在及日期的差】相關文章:

      Oracle認證作用03-19

      Oracle認證簡介11-30

      Oracle最新認證03-09

      Oracle認證途徑03-20

      Oracle認證:ORACLE綁定變量BINDPEEKING03-08

      Oracle認證職業前景03-19

      Oracle認證考試技巧03-19

      oracle認證考試詳情01-22

      Oracle認證:Oracle控制件文件修復03-18

      主站蜘蛛池模板: 日本高清中文一区二区三区| 亚洲传媒av一区二区三区| 绥德县| 中文字幕一区二区三区在线视频| 亚洲av永久无码精品成人| 神农架林区| 中国人妻沙发上喷白将av| 国产午夜视频免费观看| 亚洲欧美久久婷婷爱综合一区天堂| 中文字幕亚洲好看有码| 武隆县| 亚洲中文字幕久爱亚洲伊人| 日本一区二区三区中文字幕视频| 亚洲一区二区av偷偷| 中文字幕乱码中文乱码毛片| 亚洲国产精品久久久性色av| 国产chinese在线视频| 绿春县| 亚洲av色在线观看网站| 日韩有码中文字幕第一页| 久久蜜臀一区二区三区av| 91久久精品人妻一区二区| 国产精品一区二区久久毛片| 国产女人体一区二区三区| 沈阳市| 韩日无码不卡| 日本一区二区三区高清日韩| 柘城县| 诏安县| 精品国产午夜久久久久九九| 中国女人a毛片免费全部播放 | 被欺辱的高贵人妻被中出| av草草久久久久久久久久久| 久久亚洲午夜牛牛影视| 久久久精品国产亚洲av日韩| 亚洲一区二区三区在线观看蜜桃| 日本成人免费一区二区三区| 亚洲不卡av不卡一区二区| 日韩狼人精品在线观看| 一级做a爱视频在线播放| 色偷偷亚洲第一综合网|