Oracle时间操作

本文详细介绍了Oracle数据库中对时间操作的内置函数,包括SYSDATE、CURRENT_DATE、SYSTIMESTAMP等系统时间变量,以及ADD_MONTHS、GREATEST、LEAST、NEXT_DAY、LAST_DAY、MONTHS_BETWEEN、TO_CHAR、TO_DATE、NEW_TIME、EXTRACT等时间函数的使用,还涉及到TIMESTAMP类型的时间管理和时区转换。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

主要介绍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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值