《Les16oracle数据库教程.ppt》由会员分享,可在线阅读,更多相关《Les16oracle数据库教程.ppt(18页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、16Copyright Oracle Corporation,2001.All rights reserved.Oracle9i 日期函数日期函数 16-2Copyright Oracle Corporation,2001.All rights reserved.16-3Copyright Oracle Corporation,2001.All rights reserved.目标目标通过本章学习,您将可以使用下列日期函数通过本章学习,您将可以使用下列日期函数:TZ_OFFSETCURRENT_DATECURRENT_TIMESTAMPLOCALTIMESTAMPDBTIMEZONESESSI
2、ONTIMEZONEEXTRACTFROM_TZTO_TIMESTAMPTO_TIMESTAMP_TZTO_YMINTERVAL16-4Copyright Oracle Corporation,2001.All rights reserved.时区时区-08:00上图显示了全球上图显示了全球上图显示了全球上图显示了全球2424个时区以及当格林威个时区以及当格林威个时区以及当格林威个时区以及当格林威治时间是治时间是治时间是治时间是 12:00 12:00时各时区的时差时各时区的时差时各时区的时差时各时区的时差-05:00+02:00+10:00+07:0016-5Copyright Oracle
3、 Corporation,2001.All rights reserved.Oracle9i 日期支持日期支持Oracle9i中中,可以将时区加入到日期和时间中而且可以可以将时区加入到日期和时间中而且可以将秒进行进一步的精确将秒进行进一步的精确日期中加入了三种新的数据类型日期中加入了三种新的数据类型:TIMESTAMP(时间撮)时间撮)TIMESTAMP WITH TIME ZONE(TSTZ)(带时区的带时区的时间撮)时间撮)TIMESTAMP WITH LOCAL TIME ZONE(TSLTZ)(带有本地时区的时间撮)带有本地时区的时间撮)Oracle9i 支持夏令时支持夏令时16-6C
4、opyright Oracle Corporation,2001.All rights reserved.TZ_OFFSETSELECT TZ_OFFSET(US/Eastern)FROM DUAL;SELECT TZ_OFFSET(Canada/Yukon)FROM DUAL;SELECT TZ_OFFSET(Europe/London)FROM DUAL;显示时区显示时区 US/EasternUS/Eastern的时差的时差 显示时区显示时区 Canada/YukonCanada/Yukon的时差的时差 显示时区显示时区 Europe/London的时差的时差 16-7Copyright
5、Oracle Corporation,2001.All rights reserved.CURRENT_DATECURRENT_DATE 对会话所在的时区是敏感的对会话所在的时区是敏感的ALTER SESSION SET TIME_ZONE=-8:0;SELECT SESSIONTIMEZONE,CURRENT_DATE FROM DUAL;ALTER SESSION SET TIME_ZONE=-5:0;SELECT SESSIONTIMEZONE,CURRENT_DATE FROM DUAL;按照当前会话的时区显示当前会话的时间按照当前会话的时区显示当前会话的时间ALTER SESSION
6、 SET NLS_DATE_FORMAT=DD-MON-YYYY HH24:MI:SS;16-8Copyright Oracle Corporation,2001.All rights reserved.CURRENT_TIMESTAMPALTER SESSION SET TIME_ZONE=-8:0;SELECT SESSIONTIMEZONE,CURRENT_TIMESTAMP FROM DUAL;ALTER SESSION SET TIME_ZONE=-5:0;SELECT SESSIONTIMEZONE,CURRENT_TIMESTAMP FROM DUAL;按照当前会话的时区显示当前
7、会话的时间按照当前会话的时区显示当前会话的时间CURRENT_TIMESTAMP 对会话所在的时区是敏感的对会话所在的时区是敏感的返回值是返回值是 TIMESTAMP WITH TIME ZONE 数据类型数据类型16-9Copyright Oracle Corporation,2001.All rights reserved.LOCALTIMESTAMPALTER SESSION SET TIME_ZONE=-5:0;SELECT CURRENT_TIMESTAMP,LOCALTIMESTAMP FROM DUAL;ALTER SESSION SET TIME_ZONE=-8:0;SELEC
8、T CURRENT_TIMESTAMP,LOCALTIMESTAMP FROM DUAL;按照当前会话的时区显示当前会话的时间按照当前会话的时区显示当前会话的时间LOCALTIMESTAMP对会话所在的时区是敏感的对会话所在的时区是敏感的返回值是返回值是 TIMESTAMP 数据类型数据类型16-10Copyright Oracle Corporation,2001.All rights reserved.DBTIMEZONE 和和 SESSIONTIMEZONE SELECT DBTIMEZONE FROM DUAL;SELECT SESSIONTIMEZONE FROM DUAL;显示数据
9、库所在的时区显示数据库所在的时区显示会话所在的时区显示会话所在的时区16-11Copyright Oracle Corporation,2001.All rights reserved.EXTRACTSELECT EXTRACT(YEAR FROM SYSDATE)FROM DUAL;SELECT last_name,hire_date,EXTRACT(MONTH FROM HIRE_DATE)FROM employeesWHERE manager_id=100;从从 SYSDATE 中抽出年中抽出年从从HIRE_DATE 中抽出月中抽出月16-12Copyright Oracle Corpo
10、ration,2001.All rights reserved.FROM_TZ 应用举例应用举例SELECT FROM_TZ(TIMESTAMP 2000-03-28 08:00:00,3:00)FROM DUAL;SELECT FROM_TZ(TIMESTAMP 2000-03-28 08:00:00,Australia/North)FROM DUAL;16-13Copyright Oracle Corporation,2001.All rights reserved.SELECT TO_TIMESTAMP_TZ(1999-12-01 11:00:00-8:00,YYYY-MM-DD HH:
11、MI:SS TZH:TZM)FROM DUAL;TO_TIMESTAMP 和和 TO_TIMESTAMP_TZ 应用应用举例举例 SELECT TO_TIMESTAMP(2000-12-01 11:00:00,YYYY-MM-DD HH:MI:SS)FROM DUAL;16-14Copyright Oracle Corporation,2001.All rights reserved.TO_YMINTERVAL 应用举例应用举例 SELECT hire_date,hire_date+TO_YMINTERVAL(01-02)AS HIRE_DATE_YMININTERVAL FROM EMPLOYEESWHERE department_id=20;16-15Copyright Oracle Corporation,2001.All rights reserved.总结总结TZ_OFFSETFROM_TZTO_TIMESTAMPTO_TIMESTAMP_TZTO_YMINTERVALCURRENT_DATECURRENT_TIMESTAMPLOCALTIMESTAMPDBTIMEZONESESSIONTIMEZONEEXTRACT通过本章学习通过本章学习通过本章学习通过本章学习,您已经可以使用您已经可以使用您已经可以使用您已经可以使用:
限制150内