`

在oracle中处理日期大全

阅读更多
Sql代码 复制代码
  1.        
  2.        
  3.       TO_DATE格式          
  4.   Day:          
  5.   dd   number   12          
  6.   dy   abbreviated   fri          
  7.   day   spelled   out   friday          
  8.   ddspth   spelled   out,   ordinal   twelfth          
  9.   Month:          
  10.   mm   number   03          
  11.   mon   abbreviated   mar          
  12.   month   spelled   out   march          
  13.   Year:          
  14.   yy   two   digits   98          
  15.   yyyy   four   digits   1998          
  16.        
  17.   24小时格式下时间范围为:   0:00:00   -   23:59:59....          
  18.   12小时格式下时间范围为:   1:00:00   -   12:59:59   ....          
  19.   1.          
  20.   日期和字符转换函数用法(to_date,to_char)          
  21.        
  22.   2.          
  23.   select   to_char(   to_date(222,'J'),'Jsp')   from   dual          
  24.        
  25.   显示Two   Hundred   Twenty-Two          
  26.        
  27.   3.          
  28.   求某天是星期几          
  29.   select   to_char(to_date('2002-08-26','yyyy-mm-dd'),'day')   from   dual;          
  30.   星期一          
  31.   select   to_char(to_date('2002-08-26','yyyy-mm-dd'),'day','NLS_DATE_LANGUAGE   =   American')   from   dual;          
  32.   monday          
  33.   设置日期语言          
  34.   ALTER   SESSION   SET   NLS_DATE_LANGUAGE='AMERICAN';          
  35.   也可以这样          
  36.   TO_DATE   ('2002-08-26',   'YYYY-mm-dd',   'NLS_DATE_LANGUAGE   =   American')          
  37.        
  38.   4.          
  39.   两个日期间的天数          
  40.   select   floor(sysdate   -   to_date('20020405','yyyymmdd'))   from   dual;          
  41.        
  42.   5.   时间为null的用法          
  43.   select   id,   active_date   from   table1          
  44.   UNION          
  45.   select   1,   TO_DATE(null)   from   dual;          
  46.        
  47.   注意要用TO_DATE(null)          
  48.        
  49.   6.          
  50.   a_date   between   to_date('20011201','yyyymmdd')   and   to_date('20011231','yyyymmdd')          
  51.   那么12月31号中午12点之后和12月1号的12点之前是不包含在这个范围之内的。          
  52.   所以,当时间需要精确的时候,觉得to_char还是必要的          
  53.   7.   日期格式冲突问题          
  54.   输入的格式要看你安装的ORACLE字符集的类型,   比如:   US7ASCII,   date格式的类型就是:   '01-Jan-01'          
  55.   alter   system   set   NLS_DATE_LANGUAGE   =   American          
  56.   alter   session   set   NLS_DATE_LANGUAGE   =   American          
  57.   或者在to_date中写          
  58.   select   to_char(to_date('2002-08-26','yyyy-mm-dd'),'day','NLS_DATE_LANGUAGE   =   American')   from   dual;          
  59.   注意我这只是举了NLS_DATE_LANGUAGE,当然还有很多,          
  60.   可查看          
  61.   select   *   from   nls_session_parameters          
  62.   select   *   from   V$NLS_PARAMETERS          
  63.        
  64.   8.          
  65.   select   count(*)          
  66.   from   (   select   rownum-1   rnum          
  67.   from   all_objects          
  68.   where   rownum   <=   to_date('2002-02-28','yyyy-mm-dd')   -   to_date('2002-          
  69.   02-01','yyyy-mm-dd')+1          
  70.   )          
  71.   where   to_char(   to_date('2002-02-01','yyyy-mm-dd')+rnum-1,   'D'   )          
  72.   not          
  73.   in   (   '1',   '7'   )          
  74.        
  75.   查找2002-02-28至2002-02-01间除星期一和七的天数          
  76.   在前后分别调用DBMS_UTILITY.GET_TIME,   让后将结果相减(得到的是1/100秒,   而不是毫秒).          
  77.        
  78.   9.          
  79.   select   months_between(to_date('01-31-1999','MM-DD-YYYY'),          
  80.   to_date('12-31-1998','MM-DD-YYYY'))   "MONTHS"   FROM   DUAL;          
  81.   1          
  82.        
  83.   select   months_between(to_date('02-01-1999','MM-DD-YYYY'),          
  84.   to_date('12-31-1998','MM-DD-YYYY'))   "MONTHS"   FROM   DUAL;          
  85.        
  86.   1.03225806451613          
  87.   10.   Next_day的用法          
  88.   Next_day(date,   day)          
  89.        
  90.   Monday-Sunday,   for   format   code   DAY          
  91.   Mon-Sun,   for   format   code   DY          
  92.   1-7,   for   format   code   D          
  93.        
  94.   11          
  95.   select   to_char(sysdate,'hh:mi:ss')   TIME   from   all_objects          
  96.   注意:第一条记录的TIME   与最后一行是一样的          
  97.   可以建立一个函数来处理这个问题          
  98.   create   or   replace   function   sys_date   return   date   is          
  99.   begin          
  100.   return   sysdate;          
  101.   end;          
  102.        
  103.   select   to_char(sys_date,'hh:mi:ss')   from   all_objects;          
  104.   12.          
  105.   获得小时数          
  106.        
  107.   SELECT   EXTRACT(HOUR   FROM   TIMESTAMP   '2001-02-16   2:38:40')   from   offer          
  108.   SQL>   select   sysdate   ,to_char(sysdate,'hh')   from   dual;          
  109.        
  110.   SYSDATE   TO_CHAR(SYSDATE,'HH')          
  111.   --------------------   ---------------------          
  112.   2003-10-13   19:35:21   07          
  113.        
  114.   SQL>   select   sysdate   ,to_char(sysdate,'hh24')   from   dual;          
  115.        
  116.   SYSDATE   TO_CHAR(SYSDATE,'HH24')          
  117.   --------------------   -----------------------          
  118.   2003-10-13   19:35:21   19          
  119.        
  120.   获取年月日与此类似          
  121.   13.          
  122.   年月日的处理          
  123.   select   older_date,          
  124.   newer_date,          
  125.   years,          
  126.   months,          
  127.   abs(          
  128.   trunc(          
  129.   newer_date-          
  130.   add_months(   older_date,years*12+months   )          
  131.   )          
  132.   )   days          
  133.   from   (   select          
  134.   trunc(months_between(   newer_date,   older_date   )/12)   YEARS,          
  135.   mod(trunc(months_between(   newer_date,   older_date   )),          
  136.   12   )   MONTHS,          
  137.   newer_date,          
  138.   older_date          
  139.   from   (   select   hiredate   older_date,          
  140.   add_months(hiredate,rownum)+rownum   newer_date          
  141.   from   emp   )          
  142.   )          
  143.        
  144.   14.          
  145.   处理月份天数不定的办法          
  146.   select   to_char(add_months(last_day(sysdate)   +1,   -2),   'yyyymmdd'),last_day(sysdate)   from   dual          
  147.        
  148.   16.          
  149.   找出今年的天数          
  150.   select   add_months(trunc(sysdate,'year'),   12)   -   trunc(sysdate,'year')   from   dual          
  151.        
  152.   闰年的处理方法          
  153.   to_char(   last_day(   to_date('02'   ||   :year,'mmyyyy')   ),   'dd'   )          
  154.   如果是28就不是闰年          
  155.        
  156.   17.          
  157.   yyyy与rrrr的区别          
  158.   'YYYY99   TO_C          
  159.   -------   ----          
  160.   yyyy   99   0099          
  161.   rrrr   99   1999          
  162.   yyyy   01   0001          
  163.   rrrr   01   2001          
  164.        
  165.   18.不同时区的处理          
  166.   select   to_char(   NEW_TIME(   sysdate,   'GMT','EST'),   'dd/mm/yyyy   hh:mi:ss')   ,sysdate          
  167.   from   dual;          
  168.        
  169.   19.          
  170.   5秒钟一个间隔          
  171.   Select   TO_DATE(FLOOR(TO_CHAR(sysdate,'SSSSS')/300)   *   300,'SSSSS')   ,TO_CHAR(sysdate,'SSSSS')          
  172.   from   dual          
  173.        
  174.   2002-11-1   9:55:00   35786          
  175.   SSSSS表示5位秒数          
  176.        
  177.   20.          
  178.   一年的第几天          
  179.   select   TO_CHAR(SYSDATE,'DDD'),sysdate   from   dual          
  180.   310   2002-11-6   10:03:51          
  181.        
  182.   21.计算小时,分,秒,毫秒          
  183.   select          
  184.   Days,          
  185.   A,          
  186.   TRUNC(A*24)   Hours,          
  187.   TRUNC(A*24*60   -   60*TRUNC(A*24))   Minutes,          
  188.   TRUNC(A*24*60*60   -   60*TRUNC(A*24*60))   Seconds,          
  189.   TRUNC(A*24*60*60*100   -   100*TRUNC(A*24*60*60))   mSeconds          
  190.   from          
  191.   (          
  192.   select          
  193.   trunc(sysdate)   Days,          
  194.   sysdate   -   trunc(sysdate)   A          
  195.   from   dual          
  196.   )          
  197.        
  198.   select   *   from   tabname          
  199.   order   by   decode(mode,'FIFO',1,-1)*to_char(rq,'yyyymmddhh24miss');          
  200.        
  201.   //          
  202.   floor((date2-date1)   /365)   作为年          
  203.   floor((date2-date1,   365)   /30)   作为月          
  204.   mod(mod(date2-date1,   365),   30)作为日.          
  205.   23.next_day函数          
  206.   next_day(sysdate,6)是从当前开始下一个星期五。后面的数字是从星期日开始算起。          
  207.   1   2   3   4   5   6   7          
  208.   日   一   二   三   四   五   六      
  209. 在论坛中常常看到有对oracle中时间运算提问的问题,今天有时间,看了看以前各位兄弟的贴子,整理了一下,并作了个示例,希望会对大家有帮助。        
  210.   首先感谢ern、eric.li及各版主还有热心的兄弟们        
  211.        
  212.   内容如下:        
  213.   1、oracle支持对日期进行运算        
  214.   2、日期运算时是以天为单位进行的        
  215.   3、当需要以分秒等更小的单位算值时,按时间进制进行转换即可        
  216.   4、进行时间进制转换时注意加括号(见示例中红色括号),否则会出问题        
  217.        
  218.   SQL>   alter   session   set   nls_date_format='yyyy-mm-dd   hh:mi:ss';        
  219.        
  220.   会话已更改。        
  221.        
  222.   SQL>   set   serverout   on        
  223.   SQL>   declare        
  224.       2   DateValue   date;        
  225.       3   begin        
  226.       4   select   sysdate   into   DateValue   from   dual;        
  227.       5   dbms_output.put_line('源时间:'||to_char(DateValue));        
  228.       6   dbms_output.put_line('源时间减1天:'||to_char(DateValue-1));        
  229.       7   dbms_output.put_line('源时间减1天1小时:'||to_char(DateValue-1-1/24));        
  230.       8   dbms_output.put_line('源时间减1天1小时1分:'||to_char(DateValue-1-1/24-1/(24*60)));        
  231.       9   dbms_output.put_line('源时间减1天1小时1分1秒:'||to_char(DateValue-1-1/24-1/(24*60)-1/(24*60*6        
  232.   0)));        
  233.   10   end;        
  234.   11   /        
  235.   源时间:2003-12-29   11:53:41        
  236.   源时间减1天:2003-12-28   11:53:41        
  237.   源时间减1天1小时:2003-12-28   10:53:41        
  238.   源时间减1天1小时1分:2003-12-28   10:52:41        
  239.   源时间减1天1小时1分1秒:2003-12-28   10:52:40        
  240.        
  241.   PL/SQL   过程已成功完成。        
  242.        
  243.   SQL>    
  244.   
  245. 查看server端的字符集:   
  246. select * from V$NLS_PARAMETERS   
  247.     parameter value   
  248.     NLS_LANGUAGE SIMPLIFIED CHINESE   
  249.     NLS_TERRITORY CHINA   
  250.     …. ….   
  251.     NLS_CHARACTERSET WE8MSWIN1252   
  252.     NLS_SORT BINARY  
  253.     
  254. Oracle通过NLS_LANG来设置客户端的情况,NLS_LANG由以下部分组成:NLS_LANG=<Language>_<Territory>.<Clients Characterset>   
  255. 打开注册表:HKEY_LOCAL_MACHINE->SOFTWARE->ORACLE   
  256. 修改注册表下nls_lang键值(包括oracle下的、ID0下的和HOME0下的nls_lang都修改了)   
  257. 将NLS_LANG的键值设为:SIMPLIFIED CHINESE_CHINA.WE8MSWIN1252   
  258. 再往数据库中插入汉字就ok了。。。   
  259.   
  260. 查看表的建表记录   
  261.   SELECT   OBJECT_NAME,    --对象名     
  262.  OBJECT_TYPE,    --对象类型     
  263.  TO_CHAR(CREATED,   'YYYY-Mon-DD   HH24:MI')   CREATE_TIME, --创建时间     
  264.  TO_CHAR(LAST_DDL_TIME,   'YYYY-Mon-DD   HH24:MI')   MOD_TIME,     --修改时间   
  265.  TIMESTAMP,                  --时间戳     
  266.  STATUS                    --状态     
  267.  FROM   USER_OBJECTS     
  268.  WHERE   to_char(LAST_DDL_TIME,'yyyymmdd')>'20070202';   
  269.   
  270. 从字符串中选择出数字   
  271. --方法一:translate函数   
  272. select translate('23456中国3-00=.,45','0123456789'||'23456中国3-00=.,45','0123456789'from dual;   
  273.   
  274. --方法二:自定义函数。   
  275. create or replace function f_filter_str(var_str varcharreturn varchar  
  276. is  
  277. var_str_new varchar2(2000);   
  278. begin  
  279. for i in 1..length(var_str) loop   
  280. if ascii(substr(var_str,i,1))>=48 and ascii(substr(var_str,i,1))<=57 then  
  281. var_str_new := var_str_new || substr(var_str,i,1);   
  282. end if;   
  283. end loop;   
  284. return var_str_new;   
  285. end f_filter_str;   
  286. /   
  287.   
  288. select f_filter_str('23456中国3-00=.,45'from dual;   
  289.   
  290. --方法三:正则表达式   
  291. --oracle10g以上版本   
  292.   
  293. select regexp_replace('23456中国3-00=.,45','[^0-9]'from dual;   
  294. 结果:   
  295. 2345630045   
  296. select regexp_substr(regexp_replace('ASD45XXGG31KK/22','[^0-9]+','-'),'([0-9]+-?)+'from dual;   
  297. 结果:   
  298. 45-31-22   
  299. 结果:  
分享到:
评论

相关推荐

    oracle日期处理函数大全

    Oracle数据库在处理日期和时间数据时提供了丰富的函数和操作方式,这些函数可以帮助我们进行日期的转换、计算、格式化以及比较。以下是一些关键的Oracle日期处理函数和SQL语句的详细说明: 1. **TO_DATE函数**:...

    Oracle中的日期处理总结

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

    oracle处理日期大全

    根据提供的文件信息,本文将详细解释Oracle数据库中与日期处理相关的功能及用法。Oracle数据库提供了丰富的...以上就是关于Oracle处理日期的相关知识点详解,希望能帮助读者更好地理解和掌握Oracle中的日期处理技术。

    数据库oracle中日期处理

    Oracle提供了丰富的函数和操作符来处理日期,使得我们可以轻松地完成诸如计算星期几、两个日期之间的天数等常见需求。以下是一些关于Oracle日期处理的关键知识点: 1. **日期数据类型**: Oracle数据库中的日期...

    oracle日期处理全集

    Oracle数据库在日期处理方面提供了丰富的函数,使得对日期和时间的操作变得非常灵活。以下是对给定文件中提及的Oracle日期处理函数的详细说明: 1. **add_months(d, n)**: 此函数将日期d加上n个月,返回新的日期。...

    oracle日期处理完全版

    Oracle数据库在日期处理方面提供了丰富的函数和操作方式,使得对日期和时间的...熟练掌握这些函数,能极大地提高在数据库中处理日期和时间的效率。在实际应用中,可以根据需要创建自定义函数,以满足更复杂的业务需求。

    oracle 日期的处理大全

    Oracle数据库在处理日期时提供了丰富的函数和操作方式,这些功能对于数据处理和分析至关重要。本文将详细介绍Oracle中处理日期的一些核心知识点。 1. **日期和字符转换**:Oracle提供了`TO_DATE`和`TO_CHAR`两个...

    Oracle 日期处理大全

    Oracle数据库在处理日期时提供了丰富的函数和操作方式,使得日期和时间的管理和计算变得非常灵活。以下是一些关键的知识点: ...理解并熟练运用这些知识点,可以有效提升在Oracle环境中处理日期数据的能力。

    oracle 日期处理 总结

    Oracle数据库在日期处理方面提供了丰富的功能,这使得开发者可以方便地...理解并熟练掌握这些日期处理方法对于在Oracle数据库环境中编写SQL查询和存储过程至关重要,能够帮助开发者有效地处理和分析日期相关的数据。

    oracle_日期_加减方法

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

    oracle自定义日期函数

    在 PL/SQL 中,Oracle 提供了其他的方法来处理日期函数,例如 DATE_ADD 函数。在 T-SQL 中,DATE_ADD 函数可以用来添加指定的时间间隔到日期中,但是 PL/SQL 中没有对应的函数。因此,我们可以使用 Oracle 提供的...

    oracle日期查询相关

    在Oracle数据库中,可以通过`SYSDATE`函数来获取系统的当前日期和时间。这是一个非常实用的功能,尤其是在需要记录数据的操作时间点时。 **示例:** ```sql SELECT SYSDATE FROM DUAL; ``` 这条SQL语句将返回当前的...

    向oracle中插入日期

    在处理Oracle数据库中的日期类型数据时,经常会遇到需要将字符串转换为日期格式的情况。Oracle提供了一个非常强大的函数`to_date()`来实现这一功能。本文将详细介绍`to_date()`函数的基本用法以及一些需要注意的细节...

    Oracle日期函数大全[文].pdf

    Oracle日期函数大全是Oracle数据库中处理日期和时间的函数大全,包括TO_DATE、TO_CHAR等函数。这些函数可以对日期和时间进行各种操作,例如将日期转换为字符串、获取当前日期和时间、计算两个日期之间的天数等。 TO...

    Oracle 验证是否是日期

    ### Oracle 验证是否是日期 在Oracle数据库中,经常需要对输入的数据进行格式校验,尤其是日期格式的校验尤为重要。...这对于处理大量日期数据的应用程序来说非常有用,尤其是在需要进行日期校验的场景中。

    oracle日期时间函数大全

    Oracle数据库系统提供了丰富...了解并熟练掌握这些日期时间函数,对于在Oracle数据库中进行复杂的查询和数据分析至关重要。在实际应用中,可以根据具体需求灵活组合使用这些函数,实现对日期时间数据的精确控制和处理。

    oracle日期时间判断函数

    在Oracle数据库系统中,日期和时间的处理是数据库操作中的重要组成部分。Oracle提供了丰富的日期时间函数,用于处理和分析日期时间数据。针对标题"oracle日期时间判断函数"和描述中提到的内容,我们可以深入探讨两个...

    Oracle中日期格式字段处理.docx

    Oracle 中日期格式字段处理 Oracle 中的日期格式字段处理是指在 Oracle 数据库中对日期和时间的格式化、转换和...在 Oracle 中日期格式字段处理是非常重要的,因为它可以帮助我们更好地处理日期和时间的计算和格式化。

    oracle设置日期格式

    在Oracle数据库管理中,正确地设置日期格式对于数据处理至关重要。本文将详细介绍如何在Oracle环境中设置日期格式,包括通过会话级和系统级进行配置的方法,并探讨不同场景下的应用实例。 #### 一、Oracle日期格式...

Global site tag (gtag.js) - Google Analytics