oracle 日期函数网上已经有了不少,特我们跟集中一下,免得大家麻烦。
在oracle数据库的开发中,常因为时间的问题大费周章,所以特地将ORACLE数据的日期函数收藏致此。乃供他日所查也。
1、add_months(d,n) 日期d加n个月
SQL> SELECT SYSDATE AS This_Day,add_months(SYSDATE,1) AS Next_Day FROM dual;
THIS_DAY NEXT_DAY
-------------- ------------
08-9月 -10 08-10月-10
2、last_day(d) 包含d的月份的最后一天的日期
SQL> select last_day(sysdate) as last_day from dual;
LAST_DAY
-----------
30-9月 -10
3、new_time(d,a,b) 时区的日期和时间d在b时区的日期和时间
SQL> select to_char(sysdate,'YYYY-MM-DD HH24:MI:SS') as china,
to_char(new_time(sysdate,'est','GMT'),'YYYY-MM-DD HH24:MI:SS') as GMT
from dual;
CHINA GMT
------------------- -------------------
2010-09-08 09:51:50 2010-09-08 14:51:50
4、next_day(d,day) 比日期d晚,由day指定的周几的日期
SQL> select sysdate as this_day, next_day(sysdate,7) as next_sat from dual;
THIS_DAY NEXT_SAT
-------------- --------------
08-9月 -10 11-9月 -10
5、sysdate 当前的系统日期和时间
6、greatest(d1,d2,...dn) 给出的日期列表中最后的日期
SQL> select sysdate as this_day,greatest(sysdate,sysdate+1,sysdate+2) as max_day from dual;
THIS_DAY MAX_DAY
-------------- --------------
08-9月 -10 10-9月 -10
7、least(d1,k2,...dn) 给出的日期列表中最早的日期
SQL> select sysdate as this_day,least(sysdate,sysdate+1,sysdate-1) as min_day from dual;
THIS_DAY MIN_DAY
-------------- --------------
08-9月 -10 07-9月 -10
8、to_char(d [,fmt]) 日期d按fmt指定的格式转变成字符串
SQL> select to_char(sysdate,'YYYY-MM-DD HH24:MI:SS') as today from dual;
TODAY
-------------------
2010-09-08 10:37:08
9、to_date(st [,fmt]) 字符串st按fmt指定的格式转成日期值,若fmt忽略,st要用缺省格式
SQL> select to_date('2010-09-08 10:37:08','YYYY-MM-DD HH24:MI:SS') as today from dual;
TODAY
--------------
08-9月 -10
10、round(d [,fmt]) 日期d按fmt指定格式舍入到最近的日期
SQL> select to_char(sysdate,'YYYY-MM-DD HH24:MI:SS') as this
,round(sysdate) as round_day
,to_char(sysdate+1/6,'YYYY-MM-DD HH24:MI:SS') as next_4hour
,round(sysdate+1/6) as round_day
from dual;
THIS ROUND_DAY NEXT_4HOUR ROUND_DAY
------------------- -------------- ------------------- --------------
2010-09-08 10:52:45 08-9月 -10 2010-09-08 14:52:45 09-9月 -10
11、trunc(d [,fmt]) 日期d按fmt指定格式截断到最近的日期
SQL> select to_char(sysdate,'YYYY-MM-DD HH24:MI:SS') as this
,trunc(sysdate) as trunc_day
,to_char(sysdate+1/6,'YYYY-MM-DD HH24:MI:SS') as next_4hour
,trunc(sysdate+1/6) as trunc_day
from dual;
THIS TRUNC_DAY NEXT_4HOUR TRUNC_DAY
------------------- -------------- ------------------- --------------
2010-09-08 10:56:18 08-9月 -10 2010-09-08 14:56:18 08-9月 -10
to_date 字符串类型转为换日期类型
字符串中的相应位置上的字符,必须符合时间范围的限制
查询Oracle日期格式
----------------------------------
select * from nls_database_parameters;
得到结果如下表: 表中NLS_DATE_FORMAT表示日期格式.
PARAMETER VALUE
----------------------------------- -----------------------------------
NLS_LANGUAGE AMERICAN
NLS_TERRITORY AMERICA
NLS_CURRENCY $
NLS_ISO_CURRENCY AMERICA
NLS_NUMERIC_CHARACTERS .,
NLS_CHARACTERSET ZHS16GBK
NLS_CALENDAR GREGORIAN
NLS_DATE_FORMAT DD-MON-RR
NLS_DATE_LANGUAGE AMERICAN
NLS_SORT BINARY
NLS_TIME_FORMAT HH.MI.SSXFF AM
NLS_TIMESTAMP_FORMAT DD-MON-RR HH.MI.SSXFF AM
NLS_TIME_TZ_FORMAT HH.MI.SSXFF AM TZH:TZM
NLS_TIMESTAMP_TZ_FORMAT DD-MON-RR HH.MI.SSXFF AM TZH:TZM
NLS_DUAL_CURRENCY $
NLS_COMP BINARY
NLS_NCHAR_CHARACTERSET ZHS16GBK
NLS_RDBMS_VERSION 8.1.7.0.0
或者查询V$NLS_PARAMETERS表,
select * from V$NLS_PARAMETERS;
也有类似结果
SQL>select to_date('2004-11-12 12-07-32','yyyy-mm-dd hh24-mi-ss') value from dual;
VALUE
-------------------
2004.11.12 12:07:32
SQL>select to_date('20041015') value from dual;
VALUE
-------------------
2004.10.15 00:00:00
SQL>select to_date('20041315') value from dual;
ERROR 位于第 1 行:
ORA-01861: 文字与格式字符串不匹配
sysdate 当前日期和时间
SQL>select sysdate value from dual;
VALUE
-------------------
2003.11.23 17:09:01
last_day 本月最后一天
SQL>select last_day(sysdate) value from dual;
VALUE
-------------------
2003.11.30 17:08:17
add_months(d,n) 日期d后推n个月
SQL>select add_months(sysdate,2) value from dual;
VALUE
-------------------
2005.01.23 17:10:21
next_day(d,day) 日期d之后的第一周中,指定的那天(指定星期的第几天)是什么日期
SQL>select next_day(sysdate,1) value from dual;
VALUE
-------------------
2004.11.28 17:38:55
分享到:
相关推荐
这是最常见的方法之一,可以在当前会话中改变日期格式。例如: ```sql ALTER SESSION SET NLS_DATE_FORMAT = 'yyyy-MM-dd hh24:mi:ss'; ``` 这条命令将会把当前会话的日期格式设置为 `yyyy-MM-dd hh24:mi:ss`。...
TO_DATE 函数是 Oracle 中最常用的日期处理函数之一,它可以将字符串转换为日期类型。其基本语法为: `TO_DATE(string, format)` 其中,`string` 是要转换的字符串,`format` 是转换的格式。 例如: `SELECT TO_...
Oracle 中的日期转换是数据库管理员和开发人员经常使用的功能之一。日期转换可以将日期和时间从一种格式转换为另一种格式,以满足不同的业务需求。 1. TO_DATE 函数 TO_DATE 函数是 Oracle 中最常用的日期转换函数...
本文将深入探讨"Oracle日期之二"这一主题,基于提供的标签和压缩包文件内容,我们来详细讨论Oracle中的日期操作。 在Oracle中,日期类型是最基本的数据类型之一,用于存储日期和时间信息。在SQL查询和PL/SQL程序中...
这里的`DUAL`是一个特殊的表,用于返回单行数据,是执行SQL语句时最简单的用法之一。 ```sql SELECT SYSDATE FROM DUAL; ``` 2. **`CURRENT_DATE()`**:`CURRENT_DATE()`函数同样可以用来获取当前日期,但需要...
在Oracle数据库环境中,进行日期相关的查询是常见的需求之一。例如,有时我们需要获取当前月份的所有日期,这对于财务报表、数据统计等应用场景尤为重要。本文将详细解释如何通过Oracle SQL语句实现这一功能,并对...
在Oracle数据库中,日期函数是处理日期和时间数据的关键工具之一。这些函数广泛应用于查询、报表生成以及其他需要处理日期和时间的应用场景。根据题目提供的信息,“oracle各种日期函数”主要涉及如何获取当前的年份...
在Oracle数据库中,对日期类型的处理是十分常见的需求之一,尤其在数据查询、分析以及报表生成等场景下尤为重要。本文将详细介绍Oracle中与日期相关的两个重要函数:`to_date()` 和 `to_char()` 的用法,并通过具体...
计算两个日期之间的月份数量也是经常用到的功能之一。 ```sql SELECT MONTHS_BETWEEN(TO_DATE('01-31-1999', 'MM-DD-YYYY'), TO_DATE('12-31-1998', 'MM-DD-YYYY')) "MONTHS" FROM DUAL; ``` 这条语句返回了两个日期...
这里的关键在于日期范围的确定以及如何利用Oracle的内置函数来完成这一任务。接下来,我们将深入探讨该查询语句的具体实现方法及其背后的逻辑。 ### 一、查询背景与目标 首先,明确一下查询的背景:假设我们有一个...
在日常的企业数据库管理中,Oracle数据库作为重要的数据存储系统之一,其备份工作至关重要。为了确保数据安全及方便后期恢复操作,通常会采用自动化脚本来实现定期的数据备份。本文将详细介绍一个在Windows环境下...
Oracle日期函数的强大之处在于它们的灵活性和丰富的格式选项,可以根据需求精确地处理和格式化日期时间数据。在实际应用中,理解并熟练运用这些函数能够提高数据处理的效率和准确性。除此之外,还有其他高级日期函数...
日期函数主要用于处理和操作日期数据,以下是一些主要的Oracle日期函数: 1. **MONTHS_BETWEEN(date1, date2)**: 计算date1和date2之间的月份数,结果是一个浮点数,精确到日。例如,MONTHS_BETWEEN('01-EP-95','11...
Oracle数据库系统是世界上最广泛使用的数据库管理系统之一,尤其在企业级应用中占据主导地位。其中,日期函数是数据库操作中非常重要的部分,它们用于处理和格式化日期和时间数据。在这个"Oracle日期函数集锦"中,...
在Oracle数据库中,处理日期类型的数据是常见的需求之一。对于计算两个日期之间的差值,比如求出两个日期之间相差的天数,Oracle提供了强大的内置函数支持。本文将围绕如何使用Oracle来实现返回两个日期相差的天数这...
Oracle数据库是世界上最流行的数据库管理系统之一,它在处理复杂的SQL查询和数据管理方面具有强大的功能。在Oracle中,连接查询、日期和时间操作是数据库管理中不可或缺的部分。这篇博客将深入探讨这些主题,帮助你...
配置文件通常位于以下路径之一: - `/etc/oratab` - `/oratab` - `/etc/ora8.ora` - `/ora8/m01/app/oracle/admin/ora8/pfile` 2. **修改配置文件** 打开相应的配置文件,在文件中添加或修改以下行: `...
Oracle数据库系统是全球广泛使用的大型关系型数据库管理系统之一,它提供了强大的数据管理、处理和分析功能。本压缩包“Oracle资料 Oracle九阴真经 Oracle函数大全 Oracle错误码 Oracle参考手册 Oracle全套chm.7z”...
//生成最大编号 规则为当前日期+6位顺番, //没有记录时,当前日期+000001 //当前日期比从数据库取得的最大日期大时, 当前日期+000001 //当前日期等于从数据库取得最大日期,顺番+1
这是最彻底的方法之一,但需注意,这种方法可能会影响所有从同一机器启动的SQL*Plus会话。 #### 5. 日期格式的优先级 在Oracle中,日期格式的优先级遵循一定的规则。通过`ALTER SESSION`命令设置的日期格式具有较...