Oracle的日期型数据的内部存储格式为:世纪,年,月,日,时,分,秒。不论您的输入格式如何,Oracle永远按它的内部存储格式来存储日期型数据。
Oracle9i 日期型数据输入和输出的默认格式为 DD-MON-RR,而在之前的版本中为DD-MON-YY这大概是为了绕开“2000年问题”。
同其他的系统一样,Oracle 也提供了系统日期函数 SYSDATE,它返回当前的系统时间。可以使用例4-26的查询语句来得到当前的系统时间。
例4-26
SQL> SELECT SYSDATE 2 FROM dual;例4-26结果SYSDATE
05-MAY-02
您可以把一个日期型数据和一个数字相减,其结果仍为日期型。可以使用例4-27的查询语句来进行验证。
例4-27
SQL> SELECT SYSDATE - 10
2 FROM dual;
例4-27结果
SYSDATE-1
25-APR-02
您也可以把一个日期型数据和一个数字相加,其结果仍为日期型。您可以使用例4-28 的查询语句来进行验证。
例4-28
SQL> SELECT SYSDATE + 10
2 FROM dual;
例4-28结果
SYSDATE+1
15-MAY-02
可以把两个日期型数据相减,其结果为数字型。您可以使用例4-29的查询语句来进行验证。
例4-29
SQL> SELECT TO_DATE('15-JUL-02')- SYSDATE
2 FROM dual;
例4-29结果
TO_DATE('15-JUL-02')-SYSDATE
70.373669
如果您的操作系统和数据库都是中文系统的话,也可以将例4-29的查询语句改为例4-29a的SQL语句。例4-29a
SQL> SELECT TO_DATE('15-5月-03')- SYSDATE
2 FROM dual;
例4-29a结果
TO_DATE('15-5月-03')-SYSDATE
6.35358796
您也可以把一个日期型数据和一个小时数相加减,这个数要除以24,其结果仍为日期型。您可以使用例4-30和例4-31的查询语句来进行验证。
例4-30
SQL> SELECT SYSDATE - 22/24
2 FROM dual;
例4-30结果
SYSDATE-2
04-MAY-02
例4-31
SQL> SELECT SYSDATE + 22/24
2 FROM dual;
例4-31结果
SYSDATE+2
06-MAY-02
您也可以使用例4-32的查询语句来得到所有推销员的工龄。例4-32
SQL> SELECT empno, ename,job, sal, (SYSDATE-hiredate)/365 "Years"
2 FROM emp
3 WHERE job LIKE 'SAL%';
例4-32结果
JOB EMPNO ENAME Years SAL
7499 ALLEN SALESMAN 1600 21.2182074