在PL/SQL中共有三个日期类型:
- DATE: 表示日期和时间,精度为秒级别,没有时区信息,是Oracle中最古老和常用的日期类型
- TIMESTAMP: 和DATE类似,但是精度可以达到纳秒级别,且可以选择包含时区信息
- INTERVAL:与DATE和TIMESTAMP表示时间上的一点不同,INTERVAL表示时间段,可以选择以年,月,日,秒来表示时间区别
today_date DATE := SYSDATE;
today_timestamp TIMESTAMP := SYSTIMESTAMP;
today_timetzone TIMESTAMP WITH TIME ZONE := SYSTIMESTAMP;
today_local_timetzone TIMESTAMP WITH LOCAL TIME ZONE := SYSTIMESTAMP;
interval_year_to_month INTERVAL YEAR (4) TO MONTH := '2017-01';
interval_day_to_second INTERVAL DAY (2) TO SECOND := '10 10:10:10';
#获取当前的时间
Oracle数据库提供了一些内置函数用于获取当前的时间
函数 | 时区 | 返回类型 |
---|---|---|
CURRENT_DATE | Session | DATE |
CURRENT_TIMESTAMP | Session | TIMESTAMP WITH TIME ZONE |
LOCALTIMESTAMP | Session | TIMESTAMP |
SYSDATE | Database server | DATE |
SYSTIMESTAMP | Database server | TIMESTAMP WITH TIME ZONE |
#时间运算
Oracle数据库提供了对时间进行算术运算的不同方式:
- 将日期与一个数相加或相减, 这个操作数的单位为天
- 两个日期相减,得到时间区间
- 通过内建的日期函数进行时间运算
tomorrow DATE := SYSDATE + 1;
one_hour_ago DATE := SYSDATE - 1/24;
duration NUMBER := SYSDATE - one_hour_ago;