Oracle常用日期函数

常用的时间格式掩码如下:
掩码元素       含义
YYYY            四位数年份 (如:2005)     year
YY               二位数年份(如  05) 
Q                  季度(1-4) 
MM              月份(01-12)      month
WW             年的星期数(1-53),其中第一星期为年的第一天至第七天 
W               月的星期数(1-5),其中第一星期为月的第一天至第七天 
DDD            年的日(1-366) 
DD              月的日(1-31)    
D                周的日(1-7),其中周日为1,周六为7    day
HH24          24小时制(0-23)     hour
MI              分钟(0-59)     minute
SS              秒(0-59)     second
SSSSS        自午夜之后的秒(0-86399)

两个很不错的函数,可以操作日期,也可以操作数值:
round(日期,‘指定的日期掩码‘)      返回日期时间的四舍五入结果
指定的掩码不同则结果结果也不同
    year           以 7月1日分界线
    month        以16号为分界线
    day            以中午12点为分界线
    hh              以30分钟为分界线
    mi              以30秒为分界线

trunc(日期,‘指定的日期掩码‘)        返回截断时间
    year           本年度的1月1日
    month        本月的1号
    
例子:(注意: day    d    dd 三者的区别)
SQL> select round(to_date(‘20070516 16:31:46‘,‘yyyymmdd hh24:mi:ss‘),‘year‘) from dual;
ROUND(TO_DATE(‘2007051616:31:4
------------------------------
2007-1-1
 
SQL> select round(to_date(‘20070516 16:31:46‘,‘yyyymmdd hh24:mi:ss‘),‘month‘) from dual;
ROUND(TO_DATE(‘2007051616:31:4
------------------------------
2007-6-1
 
SQL> select round(to_date(‘20070516 16:31:46‘,‘yyyymmdd hh24:mi:ss‘),‘mm‘) from dual;
ROUND(TO_DATE(‘2007051616:31:4
------------------------------
2007-6-1
 
SQL> select round(to_date(‘20070516 16:31:46‘,‘yyyymmdd hh24:mi:ss‘),‘day‘) from dual;
ROUND(TO_DATE(‘2007051616:31:4
------------------------------
2007-5-20
 
SQL> select round(to_date(‘20070516 16:31:46‘,‘yyyymmdd hh24:mi:ss‘),‘d‘) from dual;
ROUND(TO_DATE(‘2007051616:31:4
------------------------------
2007-5-20
 
SQL> select round(to_date(‘20070516 16:31:46‘,‘yyyymmdd hh24:mi:ss‘),‘dd‘) from dual;
ROUND(TO_DATE(‘2007051616:31:4
------------------------------
2007-5-17

SQL> select trunc(to_date(‘20070516 16:31:46‘,‘yyyymmdd hh24:mi:ss‘),‘year‘) from dual;
TRUNC(TO_DATE(‘2007051616:31:4
------------------------------
2007-1-1
 
SQL> select trunc(to_date(‘20070516 16:31:46‘,‘yyyymmdd hh24:mi:ss‘),‘month‘) from dual;
TRUNC(TO_DATE(‘2007051616:31:4
------------------------------
2007-5-1
 
SQL> select trunc(to_date(‘20070516 16:31:46‘,‘yyyymmdd hh24:mi:ss‘),‘mm‘) from dual;
TRUNC(TO_DATE(‘2007051616:31:4
------------------------------
2007-5-1
 
SQL> select trunc(to_date(‘20070516 16:31:46‘,‘yyyymmdd hh24:mi:ss‘),‘day‘) from dual; 
TRUNC(TO_DATE(‘2007051616:31:4
------------------------------
2007-5-13
 
SQL> select trunc(to_date(‘20070516 16:31:46‘,‘yyyymmdd hh24:mi:ss‘),‘d‘) from dual;
TRUNC(TO_DATE(‘2007051616:31:4
------------------------------
2007-5-13
 
SQL> select trunc(to_date(‘20070516 16:31:46‘,‘yyyymmdd hh24:mi:ss‘),‘dd‘) from dual;
TRUNC(TO_DATE(‘2007051616:31:4
------------------------------
2007-5-16

日期时间函数:
           add_months(日期,number)    指定日期推迟number个月
           last_day(日期)   指定日期当月的最后一天
           new_time(日期,时区简写)   调整时区
           next_day(日期,number)  number表示周几,星期日是1,指定number的日期(一周内或一周后)
           months_between(日期1,日期2)   日期1和日期2之间有几个月
           sysdate   系统当期那日期和时间
练习时的代码:

select to_number(to_char(last_day(add_months(to_date(‘20040406‘,‘yyyymmdd‘),-1))+1,‘yyyymmdd‘)) from dual;
 
TO_NUMBER(TO_CHAR(LAST_DAY(ADD
------------------------------
                      20040401

select to_number(to_char(last_day(to_date(‘20040406‘,‘yyyymmdd‘)),‘yyyymmdd‘)) from dual;

TO_NUMBER(TO_CHAR(LAST_DAY(ADD
------------------------------
                      20040430

create or replace procedure p_hkb_date_insert is
  /*
    过程功能描述:日期插入表中
  */

v_days number(10);
  v_date date;
  i      number(10);

begin

begin
    --取得当月天数
    select to_number(to_char(last_day(sysdate), ‘dd‘))
      into v_days
      from dual;
    --select sysdate from dual; 当前日期
    --select last_day(sysdate) from dual;  月底日期
    --select last_day(add_months(sysdate, -1)) from dual;   上月底日期
    -- SELECT   to_char(last_day(SYSDATE),‘dd‘)   days   FROM   dual;    当前月的天数
    --select last_day(add_months(sysdate,-1))+1 from dual; 当前月第一天
    --select to_number(to_char(sysdate,‘yyyymmdd‘)) from dual;系统当前日期转换成如20070910格式:
  
  end;
  i := 1;
  begin
    select last_day(add_months(sysdate, -1)) into v_date from dual;
    while i <= v_days
    
     loop
      insert into hkb_date
      values
        (v_date + i,
         to_char(v_date + i, ‘yyyymmdd‘),
         to_number(to_char(v_date + i, ‘yyyymmdd‘)));
      --insert into hkb_date
      --(float_date)
      -- values
      --(to_char(v_date + i, ‘yyyymmdd‘));
      -- insert into hkb_date
      --(number_date)
      -- values
      --(to_number(to_char(v_date + i, ‘yyyymmdd‘)));
      i := i + 1;
    end loop;
  end;
end p_hkb_date_insert;

create table hkb_date_construct as select * from hkb_date where 1=2;  继承表字段

create table hkb_date_data as select * from hkb_date;  继承表记录

时间: 2024-10-18 16:56:38

Oracle常用日期函数的相关文章

Oracle 常用系统函数

2  字符函数 1.    replace( 字符串1,字符串2,字符串3) replace( char, search_string, replace_string) 功能:在"字符串1"中搜索"字符串2",并将其替换为"字符串3". 例如下面的命令是将所有员工名字中出现的"A"替换为"中国". SQL>selectreplace(ename, 'A', '中国') from scott.emp;

C# 常用日期函数

我想知道取的时期是几月.几日,然后做一些统计,上网找了一些方法. --DateTime 数字型 System.DateTime currentTime=new System.DateTime(); 1.1 取当前年月日时分秒 currentTime=System.DateTime.Now; 1.2 取当前年 int 年=currentTime.Year; 1.3 取当前月 int 月=currentTime.Month; 1.4 取当前日 int 日=currentTime.Day; 1.5 取

常用日期函数使用结合

static int MthDiff1(date d1, date d2){    int daysDiff = d1 - d2 - 1; if (daysDiff >= 0)        return (year(num2date(daysDiff)) - 1900)*12 + mthofyr(num2date(daysDiff));    else        return -1 * (year(num2date(-1 * daysDiff)) - 1900) * 12 + mthofy

Oracle SQL日期比较和常用日期函数

一.oracle sql日期比较 在今天之前: select * from up_date where update < to_date('2007-09-07 00:00:00','yyyy-mm-dd hh24:mi:ss') select * from up_date where update <= to_date('2007-09-07 00:00:00','yyyy-mm-dd hh24:mi:ss') 在今天只后: select * from up_date where updat

【ORACLE】ORACLE常用功能函数

ORACLE常用函数功能演示 文档撰写:孟祥新 写在前面: ORACLE内置函数,相当于C语言中的库函数,提供了常规数据库编程中所需的绝大多数基本功能,并且通过函数的组合或嵌套使用,可以发挥其强大的功能.由于这些内置函数都是由ORACLE公司的编程大家所写,而且其执行代码是内嵌在ORACLE数据库系统中的,因此其执行效率极高. 在数据库编程中能广泛使用ORACLE所提供的内置函数,将大大提高程序代码的执行效率."站在高人的肩膀上,将使你变得更高". 演示之前的环境设置: 为了在SQL*

oracle 数值 日期函数

数值函数 常用的处理数值的函数有如下: No. 函数名 含义 1 数字 round(列 | 数字[.小数位]) 返回数据四舍五入后的值 2 数字 trunc(列 | 数字[.小数位]) 数据截取,即不会进位 3 数字 mod(列 | 数字, 列 | 数字) 求余数 日期函数 日期有三个操作公式: 日期 + 数字 = 日期(n天之后的日期) 日期 – 数字 = 日期(n天之前的日期) 日期 – 日期 = 数字(日期之间的天数) 示例1:显示三周前(21天)的日期. select sysdate-2

Oracle常用单行函数(原创)

前言: 想把单行函数进行一个比较全面的总结,并分享给有需要的人,有不明之处还请多多指教. SQL函数:Oracle的内置函数,包括了单行函数和多行函数,本文重点讲解单行函数.单行函数又可以分为许多类,本人将常用的分为5大类: 字符函数(7个),数值函数(7个),日期函数(7个),转换函数(3个),通用函数(9个),下面开始分析. 一.字符函数: 1.concat函数:用来拼接2个字符串,Expression:concat(str1,str2); Example: select concat('m

Oracle时间日期函数

ORACLE日期时间函数大全 TO_DATE格式(以时间:2007-11-02   13:45:25为例)           Year:              yy two digits 两位年                显示值:07        yyy three digits 三位年                显示值:007        yyyy four digits 四位年                显示值:2007                    Month

MySql常用日期函数(转载)

/*date_add(date,interval expr type)和date_sub(date,interval expr type)执行日期运算. date 是一个 datetime 或date值,用来指定起始时间. expr 是一个表达式,用来指定从起始日期添加或减去的时间间隔值. expr是一个字符串;对于负值的时间间隔,它可以以一个 ‘-’开头. type 为关键词,它指示了表达式被解释的方式. 关键词interva及 type 分类符均不区分大小写. 日期操作,adddate就是d