第十六章:日期和时间函数
查看与时区相关的地区描述
conn / as sysdba
select * from v$timezone_names;
将地区描述转换成时区
SELECT TZ_OFFSET('US/Eastern') FROM DUAL;
修改数据库的时间显示格式
alter session set nls_date_format='yyyy-mm-dd hh24:mi:ss';
查看当前会话的时区:
SELECT SESSIONTIMEZONE,CURRENT_DATE FROM DUAL;
修改当前会话的时区:
ALTER SESSION SET TIME_ZONE = '-5:0';
CURRENT_DATE = sysdate
CURRENT_TIMESTAMP 返回精确时间(绝对时间全球化时间戳)
LOCALTIMESTAMP 本地化时间戳
select CURRENT_TIMESTAMP from dual;
select LOCALTIMESTAMP from dual;
返回创建数据库时的时区选项:
SELECT DBTIMEZONE FROM DUAL;
会话级别的时区选项:
SELECT SESSIONTIMEZONE FROM DUAL;
SELECT EXTRACT(YEAR FROM SYSDATE) FROM DUAL;
select to_char(sysdate,'yyyy') from dual;
SELECT EXTRACT(month FROM SYSDATE) FROM DUAL;
select to_char(sysdate,'fmmm') from dual;
将字符串转换成绝对时间全球化时间戳
SELECT FROM_TZ(TIMESTAMP
'2000-03-28 08:00:00','3:00')
FROM DUAL;
将字符串转换成本地时间戳
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')
FROM DUAL;
从当前时间点增加一年零两个月:
select sysdate+TO_YMINTERVAL('01-02') from dual;
从当前时间点增加5天2小时:
select sysdate+TO_DSINTERVAL('5 2:00:00') from dual;