国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

Oracle中的日期時間函數

2019-11-08 20:36:47
字體:
來源:轉載
供稿:網友

Oracle中日期時間的處理有時候是非常讓人頭疼的一件事。下面呢,我將我總結的一些日期時間函數的用法寫下來,以作化輸出為輸入之用。

先來了解些基本概念:

日期時間函數:用于處理DATE和TIMESTAMP類型的數據,除了函數MONRHS_BETWEEN返回數字值外,其他日期函數均返回DATE類型的數據。

數字格式:Oracle是以7位數字格式來存放日期數據的,包括世紀、年、月、日、小時、分鐘、秒,并且默認日期顯示格式為“DD-MON-YY”。下面主要對日期時間函數做以總結(說明:以下示例都在sqlplus中書寫,并測試通過的):1、ADD_MONTHS(d,n)  返回d之后或之前的n個月所對應的日期時間(n為正整數表示之后,n為負整數表示之前)。示例如下:
SQL>DECLARE              v_date DATE;          BEGIN               v_date:=add_months(sysdate,-14);               dbms_output.put_line('當前日期前14個月對應的日期:'||v_date);          END;當前日期前14個月對應的日期:27-10月-022、CURRENT_DATE   返回當前會話時區對應的日期時間,示例如下:
SQL>ALTER session SET TIME_ZONE='-5:0';SQL>ALTER SESSION SET nls_date_format='YYYY-MM-DD HH24:MI';SQL>SELECT current_date FROM dual;結果為:CURRENT_DATE--------------------------2003-12-27 06:443、CURRENT_TIMESTAMP  用于返回當前會話時區的日期時間。示例如下:
SQL>SELECT current_timestamp FROM dual;CURRENT_TIMESTAMP---------------------------------27-12月-03 07.45.22.146000 下午 +08:004、DBTIMEZONE   用于返回數據庫所在時區,示例如下:
SQL>DECLARE              v_zone VARCHAR2(10);          BEGIN               v_zone:=dbtimezone;               dbms_output.put_line('當前數據庫時區:'||v_zone);          END;結果:當前數據庫時區:+08:005、EXTRACT  用于從日期時間值中取得所需要的特定數據(例如取得年份、月份等)
SQL>SELECT extract(YEAR FROM sysdate) year FROM dual;YEAR------------20176、FROM_TZ  用于將特定時區的TIMESTAMP值轉變為TIMESTAMP WITH TIME ZONE值,示例如下:
SQL>DECLARE               v_tzv VARCHAR2(100);         BEGIN                v_tzv:=from_tz(TIMESTAMP '2003-03-28 08:00:00','3:00');                dbms_output.put_line(v_tzv);         END;28-3月 -03 08.00.00.000000000 上午 +03:007、LAST_DAY(d)   用于返回特定日期所在月份的最后一天。示例如下:
SQL>SELECT last_day(sysdate) FROM dual;LAST_DAY(sysdate)----------------------------31-12月-038、LOCALTIMESTAMP  用于返回當前會話時區的日期時間。
SQL>DECLARE              v_ts VARCHAR2(100);          BEGIN                 v_ts:=localtimestamp;                 dbms_output.put_line('當前日期時間:'||v_ts);          END;當前日期時間:27-12月-03 08.25.08.607000000 下午9、MONTHS_BETWEEN(d1,d2)   用于返回日期d1和d2之間相差的月數。如果d1小于d2,則返回負數。如果日期d1和d2的天數相同或都是月底,則返回整數;否則Oracle以每月31天為準來計算結果的小數部分。SQL> SELECT months_between(sysdate,'31-8月 -1998')  FROM dual;MONTHS_BETWEEN(SYSDATE,'31-8 月-1998')-------------------------------------------------------------------63.89842910、NEW_TIME(date,zone1,zone2)   用于返回時區一的日期時間所對應的時區二的日期時間。
SQL>DECLARE                     v_time DATE;          BEGIN                     dbms_session.set_nls('nls_date_format','YYYY-MM-DD HH24:MI:SS');                     v_time:=new_time(to_date('2003-11-10 12:10:00','YYYY-MM-DD HH24:MI:SS'),'BST','EST');                     dbms_output.put_line('當前日期時間:'||v_time);          END;當前日期時間:2003-11-10 18:10:0011、NEXT_DAY(d,char)    該函數用于返回指定日期后的第一個工作日(由char指定)所對應的日期。示例如下:
SQL>SELECT next_day(sysdate,'星期一') AS nextday FROM dual;nextday-----------29-12月 -0312、ROUND(d[.fmt])  用于返回日期時間的四舍五入結果。如果fmt指定年度,則7月1日為分界線;如果fmt指定月,則16日為分界線;如果指定天,則中午12:00時為分界線
SQL>DECLARE                v_date DATE;         BEGIN                v_date:=ROUND(SYSDATE,'MONTH');               dbms_output.put_line(SYSDATE||'四舍五入結果:'||v_date);         END;28-12月-03 四舍五入結果:01-1月 -0413、SESSIONTIMEZONE 返回當前會話所在時區
SQL>SELECT sessiontimezone FROM dual;SESSIONTIMEZONE---------------------------------+08:0014、SYSDATE  用于返回當前系統的日期時間
SQL>SELECT sysdate FROM dual;SYSDATE ----------------28-12月 -0315、SYSTIMESTAMP  用于返回當前系統的日期時間及時區。示例如下
SQL>DECLARE                   v_timestamp VARCHAR2(100);          BEGIN                   v_timestamp:=SYSTIMESTAMP;                   dbms_output.put_line('當前系統時間及時區:'||v_timestamp);          END;當前系統時間及時區:28-12月-03 07.46.47.745000000 上午 +08:00注意:以上為一些常用的日期時間函數。:
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 敦化市| 南丹县| 蓬溪县| 云安县| 白河县| 湘乡市| 青岛市| 镇康县| 冷水江市| 梁山县| 白玉县| 雅江县| 东光县| 平顺县| 昌吉市| 长子县| 娄烦县| 迭部县| 左云县| 巫溪县| 乌什县| 上高县| 高平市| 东至县| 桓仁| 陇西县| 巩义市| 昌平区| 牟定县| 阿勒泰市| 大同市| 多伦县| 芦溪县| 通化市| 仙居县| 淮北市| 蓬溪县| 吕梁市| 通城县| 库尔勒市| 永泰县|