`
高级java工程师
  • 浏览: 409230 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

oracle对日期进行操作

阅读更多
一下心血来潮,把部分Oracle对时间的一些处理,整理了一下,在这里分享一下(不足之处还请各位大牛指正)。
--因为Oracle的默认时间格式为 dd-mon-yy
SQL> select sysdate from dual;
SYSDATE
--------------
21-12月-10

--所以如果要修改一下时间格式可以有以下两种方
   --修改当前会话的时间格式
SQL> alter session set nls_date_format = 'yyyy-mm-dd';
会话已更改。
SQL> select sysdate from dual;
SYSDATE
----------
2010-12-21

   --修改当前系统的时间格式(需要重启数据库)
SQL> alter system set nls_date_format = 'yyyy-mm-dd' scope = spfile;
系统已更改。
SQL> select sysdate from dual; --还没有生效
SYSDATE
--------------
21-12月-10

--查询当前系统的时间格式
SQL> show parameter nls_date_format;
NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
nls_date_format                      string

--查询当前时间
SQL> select sysdate from dual;
SYSDATE
-------------------
2010-12-21
--在当前时间的基础上延迟10分钟,计算方式:1天除以24小时=1小时,1小时除以6分钟=10分钟。
SQL> select sysdate + 1/24/6 from dual;
SYSDATE+1/24/6
-------------------
2010-12-21 20:43:37

--在当前时间的基础上加一个月
SQL> select add_months(sysdate,1) from dual;
ADD_MONTHS(SYSDATE,
-------------------
2011-01-21 20:36:00

--在当前时间的基础上减一个月
SQL> select add_months(sysdate,-1) from dual;
ADD_MONTHS(SYSDATE,
-------------------
2010-11-21 20:37:05

--在当前时间见基础上加一年(减一年,参数为-12)
SQL> select add_months(sysdate,12) from dual;
ADD_MONTHS(SYSDATE,
-------------------
2011-12-21 20:40:26

--获取当前时间,是星期几,第二个查询,星期天=1,星期一=2,以此类推。
SQL> select to_char(sysdate,'day') from dual;
TO_CHAR(S
---------
星期二
SQL> select to_char(sysdate,'d') from dual;
T
-
3

--获取某个日期是星期几
SQL> select to_char(to_date('2010-08-09','yyyy-mm-dd'),'day') from dual;
TO_CHA
------
星期一

--获取当前月的最第一天是星期几
SQL> select to_char(sysdate-to_number(to_char(sysdate,'dd')-1),'day') from dual;
TO_CHAR(S
---------
星期三

--获取当前月的最后一天是星期几
SQL> select to_char(last_day(sysdate),'day') from dual;
TO_CHAR(L
---------
星期五
SQL> select to_char(last_day(sysdate),'d') from dual;
T
-
6

--获取上个月的最第一天是星期几
SQL> select to_char(add_months(sysdate,-1)-to_char(sysdate-1,'dd'),'day') from dual;
TO_CHAR(A
---------
星期一
SQL> select to_char(add_months(sysdate,-1)-to_char(sysdate-1,'dd'),'d') from dual;
T
-
2

--获取上个月的最后一天是星期几
SQL> select to_char(last_day(add_months(sysdate,-1)),'day') from dual;
TO_CHAR(L
---------
星期二
SQL> select to_char(last_day(add_months(sysdate,-1)),'d') from dual;
T
-
3

--获取下个月的最第一天是星期几
SQL> select to_char(add_months(sysdate,1)-to_char(sysdate-1,'dd'),'day') from dual;
TO_CHAR(A
---------
星期六
SQL> select to_char(add_months(sysdate,1)-to_char(sysdate-1,'dd'),'d') from dual;
T
-
7

--获取下个月的最后一天是星期几
SQL> select to_char(last_day(add_months(sysdate,1)),'day') from dual;
TO_CHAR(L
---------
星期一
SQL> select to_char(last_day(add_months(sysdate,1)),'d') from dual;
T
-
2

--获取本周星期一的日期
SQL> select sysdate - to_char(sysdate -2,'d') from dual;
SYSDATE-TO
----------
2010-12-20

--获取本周星期天的日期
SQL> select sysdate + 7 - to_char(sysdate -1,'d') from dual;
SYSDATE+7-
----------
2010-12-26

--获取上周星期一的日期
SQL> select sysdate - 7 - to_char(sysdate -2,'d') from dual;
SYSDATE-7-
----------
2010-12-13

--获取上周星期天的日期
SQL> select sysdate - to_char(sysdate -1,'d') from dual;
SYSDATE-TO
----------
2010-12-19

--获取下周星期一的日期
SQL> select sysdate + 7 - to_char(sysdate -2,'d') from dual;
SYSDATE+7-
----------
2010-12-27

--获取下周星期天的日期
SQL> select sysdate + 7 + to_char(sysdate-2,'d') from dual;
SYSDATE+7+
----------
2011-01-02

--获取当前月共有多少天
SQL> select to_char(last_day(sysdate),'dd') from dual;
TO
--
31

--获取今年有多少天
SQL> select sum(to_char(last_day(add_months(sysdate,-to_char(sysdate,'mm')+level)),'dd')) from dual connect by level <= 12;
SUM(TO_CHAR(LAST_DAY(ADD_MONTHS(SYSDATE,-TO_CHAR(SYSDATE,'MM')+LEVEL)),'DD'))
-----------------------------------------------------------------------------
                                                                          365

--获取本月的最后一天
SQL> select last_day(sysdate) from dual;
LAST_DAY(S
----------
2010-12-31

--计算两个时间的差
SQL> select floor(sysdate-to_date('20100506','yyyy-mm-dd')) from dual;
FLOOR(SYSDATE-TO_DATE('20100506','YYYY-MM-DD'))
-----------------------------------------------
                                            232

--获取从当年1月1日至今有多少天
SQL> select to_char(sysdate,'ddd') from dual;
TO_
---
358

--判断当前时间是上午还是下午
SQL> select case when to_char(sysdate, 'hh24') >= 23 or to_char(sysdate, 'hh24') < 3 then '凌晨' when to_char(sysdate, 'hh24') >= 3 and to_char(sysdate, 'hh24') < 6 then '早晨' when to_char(sysdate, 'hh24') >= 6 and to_char(sysdate, 'hh24') < 8 then '上午' when to_char(sysdate, 'hh24') >= 8 and to_char(sysdate, 'hh24') < 11 then '中午' when to_char(sysdate, 'hh24') >= 11 and to_char(sysdate, 'hh24') < 13 then '下午' when to_char(sysdate, 'hh24') >= 13 and to_char(sysdate, 'hh24') < 17 then '傍晚' when to_char(sysdate, 'hh24') >= 17 and to_char(sysdate, 'hh24') < 19 then '晚上' when to_char(sysdate, 'hh24') >= 19 and to_char(sysdate, 'hh24') < 23 then '深夜' end from dual;
CASE

--查找某个时间段内有多少个星期一
SQL> select count(1) from (select to_char(to_date('20101101', 'yyyy-mm-dd') + level, 'd') d from dual connect by level <= (select floor(to_date('20101201', 'yyyy-mm-dd') - to_date('20101101', 'yyyy-mm-dd')) from dual)) w where w.d=2;
  COUNT(1)
----------
         4

--获取当前时间或指定时间是所在年的第几周
SQL> select to_char(sysdate,'iw') from dual;
TO
--
51

分享到:
评论
2 楼 andubu 2012-04-19  
1 楼 bestxiaok 2012-03-28  
装oracle时候,回默认nls_date_format这个格式吧,现在用11gR2的时间就是2012/3/28 9:25:50这样的了。
总结的 很全,借用了。。。

相关推荐

    Oracle时间日期操作

    Oracle 时间日期操作是 Oracle 数据库中的一种常用的操作类型,它可以对数据库中的日期和时间进行各种处理和计算。以下是 Oracle 时间日期操作的一些常见知识点: 1. 获取当前日期和时间:使用 `sysdate` 函数可以...

    oracle_日期_加减方法

    在Oracle数据库中,日期操作是常见的SQL查询任务,特别是在处理历史数据或进行时间相关的分析时。Oracle提供了丰富的函数来帮助用户对日期进行加减操作,这些功能强大且灵活的函数使得开发者能更精确地处理时间数据...

    oracle日期查询相关

    ### Oracle日期查询相关知识点 #### 一、获取系统当前日期与时间 在Oracle数据库中,可以通过`SYSDATE`函数来获取系统的当前日期和时间。这是一个非常实用的功能,尤其是在需要记录数据的操作时间点时。 **示例:...

    oracle日期操作举例

    ### Oracle 日期操作详解 #### 一、日期时间间隔操作 在Oracle数据库中,我们可以方便地执行日期时间的间隔操作,比如对当前时间进行增减指定的时间间隔。 **1. 当前时间减去7分钟的时间** ```sql SELECT SYSDATE...

    oracle自定义日期函数

    Oracle 自定义日期函数 Oracle 日期处理函数是数据库管理系统中非常重要的一部分,最近看到有人在做 T-SQL 与 PL/SQL 的转化,问了些有关时间函数的处理。在 PL/SQL 中,Oracle 提供了其他的方法来处理日期函数,...

    oracle设置日期格式

    #### 一、Oracle日期格式基础 在开始之前,我们先来了解一些关于Oracle日期格式的基础知识: 1. **NLS_DATE_FORMAT**:这是一个非常重要的环境变量,用于控制日期在查询结果中的显示格式。 2. **日期格式字符串**...

    oracle日期时间判断函数

    针对标题"oracle日期时间判断函数"和描述中提到的内容,我们可以深入探讨两个关键的函数,它们主要用于判断字符串是否可以转换为合法的日期时间格式。 1. TO_DATE函数: TO_DATE是Oracle中用于将字符串转换为日期...

    Oracle日期函数练习

    Oracle 日期函数练习 Oracle 日期函数是 Oracle 数据库中的一组功能强大且广泛使用的...Oracle 日期函数提供了丰富的日期操作和计算功能,通过这些函数,可以轻松地对日期进行各种操作和计算,以满足不同的业务需求。

    ORACLE常用日期函数集合

    除了格式化日期外,Oracle还提供了多种日期操作函数,用于进行更复杂的日期计算。 1. **截取日期** - `trunc()`: 可以根据不同的级别截取日期。例如: ```sql SELECT trunc(sysdate, 'Q') FROM dual; -- 截取到...

    oracle日期及时间格式

    Oracle 日期及时间格式是 Oracle 编程语言中一个重要的组成部分,了解 Oracle 日期及时间格式可以帮助开发者更好地处理日期及时间相关的操作。在 Oracle 中,日期及时间格式可以通过使用 TO_CHAR 函数来实现,该函数...

    在oracle中处理日期大全

    这条语句将将 null 转换为日期类型,然后将其与其他日期进行 union 操作。 日期格式冲突问题 在 Oracle 中,我们需要注意日期格式的冲突问题。例如: `ALTER SYSTEM SET NLS_DATE_LANGUAGE = 'AMERICAN';` 这条...

    oracle日期处理完全版

    除了以上介绍的功能,Oracle还提供了其他日期处理函数,如 `add_months`、`trunc`、`last_day` 等,它们可以帮助进行日期的增加、截断和找到月份的最后一天等操作。熟练掌握这些函数,能极大地提高在数据库中处理...

    oracle日期处理全集

    以下是对给定文件中提及的Oracle日期处理函数的详细说明: 1. **add_months(d, n)**: 此函数将日期d加上n个月,返回新的日期。例如,`add_months(SYSDATE,1)`会返回当前日期往后一个月的日期。 2. **last_day(d)**...

    oracle插入日期

    1. **日期格式的一致性**:在进行日期操作时,需要确保所有的日期字符串都遵循相同的格式规则。如果格式不一致,则可能会导致错误或意外的结果。 2. **时区问题**:虽然`DATE`类型不包含时区信息,但在实际应用中,...

    Oracle日期时间(DateTime)操作

    本文将深入解析Oracle日期时间操作的一些核心知识点,涵盖基本的日期时间函数使用、日期时间的格式化、以及一些高级的日期时间计算技巧。 ### 一、基础日期时间函数 #### 1. SYSDATE `SYSDATE`是Oracle系统中获取...

    Oracle中的日期处理总结

    在Oracle中,经常需要对日期进行格式化处理,常见的操作包括将日期转换为字符串以及将字符串转换为日期。 1. **`TO_CHAR(date, '格式')`**:该函数用于将日期类型转换成指定格式的字符串。例如: ```sql SELECT...

    数据库oracle中日期处理

    以下是一些关于Oracle日期处理的关键知识点: 1. **日期数据类型**: Oracle数据库中的日期数据类型包括`DATE`和`TIMESTAMP`。`DATE`不仅包含日期,还包含了时间部分(小时、分钟和秒)。`TIMESTAMP`则更精确,...

    oracle中日期操作

    在Oracle数据库中,日期操作是数据库管理中的常见任务,尤其对于记录有时间敏感信息的数据表。Oracle中的`DATE`类型可以存储日期和时间,而不仅仅是日期。以下是一些关于Oracle中日期操作的关键知识点: 1. **日期...

    oracle 日期处理 总结

    以下是对Oracle日期处理的一些关键知识点的详细说明: 1. **将时间字符串转换为时间** Oracle提供了`to_date()`函数将字符串转换为日期类型。这个函数需要两个参数:要转换的字符串和匹配的转换格式。例如,`to_...

Global site tag (gtag.js) - Google Analytics