近来经常用到时间函数,在此写一个笔记,记录自己的所得,希望也对您有所帮助。

1、对于一个时间如 sysdate:2015/1/30 14:16:03如何只得到年月日,同时它的数据类型不变化呢?

最容易想到的是to_char然后在to_date,以前我所能想到的就是这个,因为觉得麻烦在网上搜了一下,找到了另外一种方法,trunc(sysdate),即可得到想要的结果

select sysdate from dual;

SYSDATE
-----------
2015/1/30 1 select to_date(to_char(sysdate,'yyyymmdd'),'yyyymmdd') from dual; TO_DATE(TO_CHAR(SYSDATE,'YYYYM
------------------------------
2015/1/30 select trunc(sysdate) from dual; TRUNC(SYSDATE)
--------------
2015/1/30

2、有了上面的铺垫在进行下面的时间比对就简单多了

有这么一个需求,我在每个季度的第一天要修改一笔数据,这笔数据必须是上一季度前十天之前添加的。即:7月1日修改4月10日(包括)之前添加的数据

这个时候就用到了MONTHS_BETWEEN函数,期初我是这么考虑的,

如果数据的添加时间是4月10日23点59分59秒,这样和7月1日做运算的结果为:2.67741972

如果数据的添加时间是4月11日0点0分0秒,这样和7月1日做运算的结果为:2.67741935

而4月10日与7月10日的运算结果为:2.70967741

为了确保时间的可控性,想到了使用年月日,去除掉时间的时分秒

具体代码如下:(使用to_date('20150701','yyyymmdd') 来模拟时间参数)

select MONTHS_BETWEEN(to_date('20150701','yyyymmdd'),to_date('20150410 23:59:59','yyyymmdd HH24:mi:ss')) time from dual;

      TIME
----------
2.67741972 select MONTHS_BETWEEN(to_date('20150701','yyyymmdd'),to_date('20150411 00:00:00','yyyymmdd HH24:mi:ss')) time from dual; TIME
----------
2.67741935 select MONTHS_BETWEEN(to_date('20150701','yyyymmdd'),to_date('20150410','yyyymmdd')) time from dual; TIME
----------
2.70967741 select MONTHS_BETWEEN(to_date('20150701','yyyymmdd'),trunc(to_date('20150410 15:23:38','yyyymmdd HH24:mi:ss'))) time from dual; TIME
----------
2.70967741

 最终不用肯定是使用trunc和months_between两者相结合来完成这个需求了。

oracle 几个时间函数探究的更多相关文章

  1. mysql与oracle的日期/时间函数小结

    前言 本文的日期/时间全部格式化为”2016-01-01 01:01:01“形式: MONITOR_TIME为数据库表字段: 字符串与日期/时间相互转换函数 Oracle 日期/时间转字符串函数:to ...

  2. Oracle中的时间函数用法(to_date、to_char) (总结)

    一.24小时的形式显示出来要用HH24 select to_char(sysdate,'yyyy-MM-dd HH24:mi:ss') from dual; select to_date('2005- ...

  3. Oracle常用SQL时间函数

    1.查询当前日期和时间 select sysdate from dual; 2.查询本月最后一天 select last_day(sysdate) from dual; 3.查询前后多少月 ) fro ...

  4. oracle日期时间函数总结

    常常写 sql 的同学应该会接触到一些 oracle 的日期时间函数, 比如: 財务软件或者人力资源软件须要依照每年, 每季度, 每月, 甚至每一个星期来进行统计. 今天闲来没事, 特意从网上整理了一 ...

  5. Oracle日期时间函数大全

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

  6. ORACLE时间函数(SYSDATE)深入理解

    ORACLE时间函数(SYSDATE)深入理解 加法 select sysdate,add_months(sysdate,12) from dual; --加1年 select sysdate,add ...

  7. oracle 时间函数

    加法 select sysdate,add_months(sysdate,12) from dual; --加1年 select sysdate,add_months(sysdate,1) from ...

  8. [转]ORACLE日期时间函数大全

    本文转自:http://www.cnblogs.com/chuncn/archive/2009/04/29/1381282.html ORACLE日期时间函数大全 TO_DATE格式(以时间: ::2 ...

  9. [转载]ORACLE日期时间函数大全

    ORACLE日期时间函数大全 TO_DATE格式(以时间:2007-11-02   13:45:25为例)           Year:              yy two digits 两位年 ...

随机推荐

  1. C语言之实现控制台光标随意移动

    原理引入windows.h,首先是要获得输入的东西,然后通过判断: 1.方向键:执行上下左右的移动功能 2:回车键:执行换行的功能. 3.普通键:输入功能. 终点就是要获取到屏幕上的坐标,当按下了方向 ...

  2. JAVA+PHP+阿里云组件纯手工实现POP、SMTP、IMAP开发邮件服务器(二)

    java开发邮件服务器的接收模块 用java建立socket服务端,监听端口25,实现SMTP协议.即可完成邮件服务器的接收模块. 这里要注意的是,SMTP协议其实可以分为两种.一种是你用手机.PC等 ...

  3. FPGA中的时序分析(四)

    常用约束语句说明 关于Fmax      上述是实现Fmax的计算公式,clock skew delay的计算如下图, 就是两个时钟的差值.到头来,影响Fmax的值的大小就是组合逻辑,而Fmax是针对 ...

  4. 获取oracle 里的表名与字段

    --数据库表名 SELECT distinct A.OBJECT_NAME as TAB_NAME,B.comments as DESCR FROM USER_OBJECTS A , USER_TAB ...

  5. SQL基本语句(2)

    使用Insert语句插入新数据 语法:INSERT [INTO] tbl_name [(col_name,...)] VALUES (pression,...),… INSERT [INTO] tbl ...

  6. 在 MVC 控制器中使用 构造函数时行依赖注入 (IoC)

    在 Controller 中使用 构造函数进行依赖注入 (IoC) 1. Controller 代码: ICard card; ICardCategory cardCategory; public C ...

  7. sqlplus sys/system@'(description=(address_list=(address=(protocol=tcp)(host=192.168.11.199)(port=1521)))(connect_data=(service_name=byRuiy)))' as sysdba

  8. Android IOS WebRTC 音视频开发总结(五四)-- WebRTC标准之父谈WebRTC

    本文主要是整理自国内首届WebRTC大会上对Daniel的一些专访,转载必须说明出处,欢迎关注微信公众号blacker,更多说明详见www.rtc.help 说明:以下内容主要整理自InfoQ的专访, ...

  9. Android IOS WebRTC 音视频开发总结(三五)-- chatroulette介绍

    本文主要从技术角度介绍chatroulette,文章来自博客园RTC.Blacker,支持原创,转载请说明出处. 很多人不知道或没用过chatroulette,下面先来张界面截图让大家有个整体了解: ...

  10. grub丢失的修复

    使用安装光盘进入rescure模式,经过配置后进入一个bashbash# grubgrub> root (hd0,6)grub> setup (hd0)重启即可