Oracle时间日期函数及sql语句 您所在的位置:网站首页 Oracle转为日期时间 Oracle时间日期函数及sql语句

Oracle时间日期函数及sql语句

2024-07-12 06:34| 来源: 网络整理| 查看: 265

一、时间日期函数 1.to_date函数 to_date的格式:to_date(‘要转换的时间’,’转换成的时间格式’), 两个参数的格式必须匹配,否则会报错。 需要注意的是,在Java中的时间格式是“yyyy-MM-dd HH:mm:ss”,但是在oracle的sql中由于不区分大小写,时间格式中的“mm”将被识别为月,导致出现“ORA 01810 格式代码出现两次”的错误。所以Oracle的SQL采用了mi代替分钟,oracle的全时间格式为“yyyy-MM-dd HH24:mi:ss”。同时,要以24小时时间的形式显示出来要用HH24,而不是HH。 to_char(日期,”转换格式” ) 即把给定的日期按照“转换格式”转换。 转换的格式: yyyy 用4位数表示年,mm 用2位数字表示月,dd 表示当月第几天。同时,用q表示季度,用ww 来表示当年第几周,w用来表示当月第几周。ddd表示当年第几天,dd 表示当月第几天,d表示这个星期的第几天。 2.时间相关的sql语句 (1) 查询转换时间格式

select to_char(sysdate,'YYYY-MM-DD HH24:MI:SS') from dual;

(2) 取得当前日期是一个星期中的第几天

select to_char(sysdate,'D') from dual; ---取得当前日期是一个星期中的第几天

ps:根据上面列出的转换格式,有很多类似的查询如下:

select to_char(sysdate,'Q') from dual; --当前日期所在季度 select to_char(sysdate,'mm') from dual; --当前日期在本年的第几个月 select to_char(sysdate,'ww') from dual; --当前日期是‘本年’的第几周 select to_char(sysdate,'w') from dual; --当前日期是‘本月’的第几周 select to_char(sysdate,'ddd') from dual; --当前日期是本年第几天 select to_char(sysdate,'dd') from dual; --当前日期是本月第几天

(3) 取当前日期是星期几中文显示

select to_char(sysdate,'day') from dual;

(4) 给现有日期加/减月(年)份 这里是使用add_months函数实现年月的加减。add_months是运算函数,函数将传入的日期上加上/减去月份数,所以,日期中的日一般是不变的。然而,如果传入的日期是某月的最后一天,那么,结果将会调整以使返回值仍对应新的一月的最后一天。如果,结果月份的天数比开始月份的天数少,那么,也会向回调整以适应有效日期。

select add_months(sysdate,24) from dual; --加上两年 select add_months(sysdate,-24) from dual; --减去两年 select add_months(sysdate,3) from dual; --加上三个月 select add_months(to_date('2017-01-31','yyyy-mm-dd'),1) from dual; --由于一月的最后一天是31号,而加一个月,二月份只有28天,所以返回的结果是2017-2-28。

(5) 判断某一日子所在年分是否为润年

select decode(to_char(last_day(trunc(sysdate,'y')+31),'dd'),'29','闰年','平年') from dual;

(6) 当前时间减去七年

select sysdate,sysdate - interval '7' year from dual; --当前时间减去七年

ps:有很多类似的查询如下:

select sysdate,sysdate - interval '7' MINUTE from dual; --当前时间减去7分钟的时间 select sysdate - interval '7' hour from dual; --当前时间减去7小时的时间 select sysdate - interval ’7’ day from dual; --当前时间减去7天的时间 select sysdate,sysdate - interval '7' month from dual; --当前时间减去7月的时间

(7)查询日期之间的数据 例如查询student表中出生日期(birthday)在’2016-01-01’ 和’2017-01-01’之间的数据:

select * from student where birthday between '2016-01-01' and '2017-01-01';

对于日期不规则的数据需要先转格式,如下:

select * from student where to_date(student.birthday,'YYYY-MM-DD') between to_date('2016/01/01','YYYY-MM-DD') and to_date('2017/01/01','YYYY-MM-DD');

(8)查询小于或者大于某日期的数据 例如查询student表中出生日期(birthday)小于等于’2016-01-01’的数据:

select * from student where birthday 和”这样的字符,但是都可以使用

select * from student where

(10)伪列dual Dual 是 Oracle中的一个实际存在的表,任何用户均可读取,常用在没有目标表的select语句块中。 比如,“select sysdate from dual”获取系统当前时间。”select user from dual”则返回当前连接的用户。如果是”select 1+2 from dual”,则返回结果3。



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有