主要介绍Oracle对时间操作的内置函数
1.Oracle内部时间:
SYSDATE:
SQL> SELECT SYSDATE FROM DUAL;
SYSDATE
------------------
24-APR-13
CURRENT_DATE:
SQL> SELECT CURRENT_DATE FROM DUAL;
CURRENT_DATE
------------------
24-APR-13
SYSTIMESTAMP:
SQL> SELECT SYSTIMESTAMP FROM DUAL;
SYSTIMESTAMP
---------------------------------------------------------------------------
24-APR-13 11.17.53.448133 AM +08:00
2.Oracle时间内置函数:
2.1ADD_MONTHS增加、减少月份
SQL> SELECT ADD_MONTHS(CURRENT_DATE,4) FROM DUAL;
ADD_MONTHS(CURRENT
------------------
24-AUG-13
SQL> SELECT ADD_MONTHS(CURRENT_DATE,-4) FROM DUAL;
ADD_MONTHS(CURRENT
------------------
24-DEC-12
2.2 GREATEST和LEAST:least从一个日期(不管是列还是日期字面值)表中选择最早的日期,而greatest从一个日期表中选择最近的一个日期。两者如果用于数值和字符串时,其作用是相同的。
2.3 NEXT_DAY将计算下一个这个的星期几是哪一天。
例如:每个发工资的时间是每月15号之后的第一个星期五;今天是2013-4-24星期三
SQL> SELECT NEXT_DAY(CURRENT_DATE,'FRIDAY') FROM DUAL;
NEXT_DAY(CURRENT_D
------------------
26-APR-13
由于有的时候星期5就是15号,该函数实际是一种大于函数。它要求下一个日期大于属于本周中某一天的指定日期。为了找到那些已经是星期五的日期,可从发工资中减去一天。这是每个发工资日期总是正确的星期五。
2.4 LAST_DAY计算每个月最后一天是哪一天
SQL> SELECT LAST_DAY(CURRENT_DATE) FROM DUAL;
LAST_DAY(CURRENT_D
------------------
30-APR-13
2.5 MONTHS_BETWEEN 计算两个日期相差多少个月
SQL> SELECT MONTHS_BETWEEN(CURRENT_DATE,TO_DATE('24-FEB-13')) FROM DUAL;
MONTHS_BETWEEN(CURRENT_DATE,TO_DATE('24-FEB-13'))
-------------------------------------------------
2
2.5 TO_CHAR/TO_DATE 设置日期格式
两者有点类似;功能上刚好相反,TO_DATE将字符串或数字转换成oracle时间,而TO_CHAR将oracle时间转换成字符串
2.6 NEW_TIME:切换时区
2.7 EXTRACT函数可以在时间中提取月年日
SQL> SELECT EXTRACT(YEAR FROM CURRENT_DATE) FROM DUAL;
EXTRACT(YEARFROMCURRENT_DATE)
-----------------------------
2013
2.8 使用TIMESTAMP时间类型
SQL> SELECT EXTRACT(YEAR FROM CURRENT_DATE) FROM DUAL;
EXTRACT(YEARFROMCURRENT_DATE)
-----------------------------
2013
SQL> CREATE TABLE X2(TSCOL TIMESTAMP(5) WITH TIME ZONE);
Table created.
SQL> INSERT INTO X2 VALUES(SYSTIMESTAMP);
1 row created.
SQL> SELECT * FROM X2;
TSCOL
---------------------------------------------------------------------------
24-APR-13 01.59.58.58503 PM +08:00
SQL> CREATE TABLE X1(TSCOL TIMESTAMP(5));
Table created.
SQL> INSERT INTO X1 VALUES(SYSTIMESTAMP);
1 row created.
SQL> SELECT * FROM X1;
TSCOL
---------------------------------------------------------------------------
24-APR-13 02.00.59.05384 PM