当前位置:
文档之家› Oracle公司内部数据库培训资料Les16chinese
Oracle公司内部数据库培训资料Les16chinese
Oracle公司内部数据库培训资料Les16chinese
EXTRACT
• 从 SYSDATE 中抽出年
SELECT EXTRACT (YEAR FROM SYSDATE) FROM DUAL;
• 从HIRE_DATE 中抽出月
SELECT last_name, hire_date, EXTRACT (MONTH FROM HIRE_DATE)
FROM DUAL;
学习改变命运,知 识创造未来
Oracle公司内部数据库培训资料Les16chinese
TO_YMINTERVAL 应用举例
SELECT hire_date, hire_date + TO_YMINTERVAL('01-02') AS HIRE_DATE_YMININTERVAL
Oracle9i 日期支持
• Oracle9i中, 可以将时区加入到日期和时间中而且可以
将秒进行进一步的精确
• 日期中加入了三种新的数据类型:
– TIMESTAMP(时间撮) – TIMESTAMP WITH TIME ZONE (TSTZ) (带时区的
时间撮) – TIMESTAMP WITH LOCAL TIME ZONE (TSLTZ) (
学习改变命运,知 识创造未来
Oracle公司内部数据库培训资料Les16chinese
学习改变命运,知 识创造未来
时区
-08:00
+07:00
-05:00
+02:00
+10:00
上图显示了全球24个时区以及当格林来自 治时间是 12:00时各时区的时差
Oracle公司内部数据库培训资料Les16chinese
CURRENT_TIMESTAMP
• 按照当前会话的时区显示当前会话的时间
ALTER SESSION SET TIME_ZONE = '-5:0'; SELECT SESSIONTIMEZONE, CURRENT_TIMESTAMP FROM DUAL;
ALTER SESSION SET TIME_ZONE = '-8:0'; SELECT SESSIONTIMEZONE, CURRENT_TIMESTAMP FROM DUAL;
• CURRENT_TIMESTAMP 对会话所在的时区是敏感的 • 返回值是 TIMESTAMP WITH TIME ZONE 数据类型
学习改变命运,知 识创造未来
Oracle公司内部数据库培训资料Les16chinese
LOCALTIMESTAMP
• 按照当前会话的时区显示当前会话的时间
ALTER SESSION SET TIME_ZONE = '-5:0'; SELECT CURRENT_TIMESTAMP, LOCALTIMESTAMP FROM DUAL;
SELECT TZ_OFFSET('Canada/Yukon') FROM DUAL;
• 显示时区 'Europe/London'的时差
SELECT TZ_OFFSET('Europe/London') FROM DUAL;
学习改变命运,知 识创造未来
Oracle公司内部数据库培训资料Les16chinese
ALTER SESSION SET TIME_ZONE = '-8:0'; SELECT SESSIONTIMEZONE, CURRENT_DATE FROM DUAL;
• CURRENT_DATE 对会话所在的时区是敏感的
学习改变命运,知 识创造未来
Oracle公司内部数据库培训资料Les16chinese
SELECT FROM_TZ(TIMESTAMP '2000-03-28 08:00:00', 'Australia/North')
FROM DUAL;
学习改变命运,知 识创造未来
Oracle公司内部数据库培训资料Les16chinese
TO_TIMESTAMP 和 TO_TIMESTAMP_TZ 应 用举例
Oracle公司内部数据库培训资料Les16chinese
DBTIMEZONE 和 SESSIONTIMEZONE
• 显示数据库所在的时区
SELECT DBTIMEZONE FROM DUAL;
• 显示会话所在的时区
SELECT SESSIONTIMEZONE FROM DUAL;
学习改变命运,知 识创造未来
FROM employees WHERE manager_id = 100;
学习改变命运,知 识创造未来
Oracle公司内部数据库培训资料Les16chinese
FROM_TZ 应用举例
SELECT FROM_TZ(TIMESTAMP '2000-03-28 08:00:00','3:00')
FROM DUAL;
CURRENT_DATE
• 按照当前会话的时区显示当前会话的时间
ALTER SESSION SET NLS_DATE_FORMAT = 'DD-MON-YYYY HH24:MI:SS';
ALTER SESSION SET TIME_ZONE = '-5:0'; SELECT SESSIONTIMEZONE, CURRENT_DATE FROM DUAL;
带有本地时区的时间撮)
• Oracle9i 支持夏令时
学习改变命运,知 识创造未来
Oracle公司内部数据库培训资料Les16chinese
TZ_OFFSET
• 显示时区 ‘US/Eastern’的时差
SELECT TZ_OFFSET('US/Eastern') FROM DUAL;
• 显示时区 'Canada/Yukon'的时差
FROM EMPLOYEES WHERE department_id = 20;
学习改变命运,知 识创造未来
Oracle公司内部数据库培训资料Les16chinese
SELECT TO_TIMESTAMP ('2000-12-01 11:00:00', 'YYYY-MM-DD HH:MI:SS')
FROM DUAL;
SELECT TO_TIMESTAMP_TZ('1999-12-01 11:00:00 -8:00', 'YYYY-MM-DD HH:MI:SS TZH:TZM')
Oracle公司内部数据库 培训资料Les16chinese
学习改变命运,知 识创造未来
2021年2月17日星期三
目标
通过本章学习,您将可以使用下列日期函数:
• TZ_OFFSET • CURRENT_DATE • CURRENT_TIMESTAMP • LOCALTIMESTAMP • DBTIMEZONE • SESSIONTIMEZONE • EXTRACT • FROM_TZ • TO_TIMESTAMP • TO_TIMESTAMP_TZ • TO_YMINTERVAL
ALTER SESSION SET TIME_ZONE = '-8:0'; SELECT CURRENT_TIMESTAMP, LOCALTIMESTAMP FROM DUAL;
• LOCALTIMESTAMP对会话所在的时区是敏感的 • 返回值是 TIMESTAMP 数据类型
学习改变命运,知 识创造未来