oracle 几个时间函数探究
近来经常用到时间函数,在此写一个笔记,记录自己的所得,希望也对您有所帮助。
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 几个时间函数探究的更多相关文章
- mysql与oracle的日期/时间函数小结
前言 本文的日期/时间全部格式化为”2016-01-01 01:01:01“形式: MONITOR_TIME为数据库表字段: 字符串与日期/时间相互转换函数 Oracle 日期/时间转字符串函数:to ...
- Oracle中的时间函数用法(to_date、to_char) (总结)
一.24小时的形式显示出来要用HH24 select to_char(sysdate,'yyyy-MM-dd HH24:mi:ss') from dual; select to_date('2005- ...
- Oracle常用SQL时间函数
1.查询当前日期和时间 select sysdate from dual; 2.查询本月最后一天 select last_day(sysdate) from dual; 3.查询前后多少月 ) fro ...
- oracle日期时间函数总结
常常写 sql 的同学应该会接触到一些 oracle 的日期时间函数, 比如: 財务软件或者人力资源软件须要依照每年, 每季度, 每月, 甚至每一个星期来进行统计. 今天闲来没事, 特意从网上整理了一 ...
- Oracle日期时间函数大全
ORACLE日期时间函数大全 TO_DATE格式(以时间:2007-11-02 13:45:25为例) Year: yy two digits 两位年 显示值:07 yyy three digits ...
- ORACLE时间函数(SYSDATE)深入理解
ORACLE时间函数(SYSDATE)深入理解 加法 select sysdate,add_months(sysdate,12) from dual; --加1年 select sysdate,add ...
- oracle 时间函数
加法 select sysdate,add_months(sysdate,12) from dual; --加1年 select sysdate,add_months(sysdate,1) from ...
- [转]ORACLE日期时间函数大全
本文转自:http://www.cnblogs.com/chuncn/archive/2009/04/29/1381282.html ORACLE日期时间函数大全 TO_DATE格式(以时间: ::2 ...
- [转载]ORACLE日期时间函数大全
ORACLE日期时间函数大全 TO_DATE格式(以时间:2007-11-02 13:45:25为例) Year: yy two digits 两位年 ...
随机推荐
- Effective Modern C++翻译(4)-条款3:了解decltype
条款3 了解decltype decltype是一个有趣的东西,给它一个变量名或是一个表达式,decltype会告诉你这个变量名或是这个表达式的类型,通常,告诉你的结果和你预测的是一样的,但是偶尔的结 ...
- Oozie JMS通知消息实现--根据作业ID来过滤消息
一,介绍 本文使用Oozie的消息通知功能,并根据JMS规范中的消息选择器(Selector)实现 根据作业的ID来过滤消息. 首先搭建好JMS Provider(ActiveMQ) ,并进行相关配置 ...
- Flash图表控件FusionCharts自定义图表y轴最大/最小值
自定义图表y轴的最大值和最小值 用户可以使用FusionCharts图表中<chart>元素的yAxisMaxValue和yAxisMinValue属性设置图表限制. 示例: <ch ...
- 安装office2013时弹出microsoft setup bootstrapper已停止工作,接着就不能安装了
只是说一下自己的解决方法: 我的原因是注册表没有删除改进. 1.输入regedit 2.找到HKEY_LOCAL_MACHINE\software\microsoft\windows\CurrentV ...
- windows 服务的启动与安装
在使用windows 操作系统时,我们对windows服务再也熟悉不过了,这些服务有的是系统层的,有的是应用层的,大部分都是运行在桌面的后台,可以在进程中看到,有时候在做web项目时,在站点启动时要启 ...
- 洛谷P1459 三值的排序 Sorting a Three-Valued Sequence
P1459 三值的排序 Sorting a Three-Valued Sequence 166通过 369提交 题目提供者该用户不存在 标签USACO 难度普及- 提交 讨论 题解 最新讨论 那么 ...
- VC7 HTML Dialog开发实例讲解
开发环境:VS7,Windows XP,Windows 2K 在VS7中添加了一种新的对话框类:CDHtmlDialog,顾名思义就是能够显示DHTML内容的对话框,但不同与以前的CHTMLView不 ...
- asp.net Global.asax 方法的使用和说明
Global.asax 文件,有时候叫做 ASP.NET 应用程序文件,提供了一种在一个中心位置响应应用程序级或模块级事件的方法你可以使用这个文件实现应用程序安全性以及其它一些任务下面让我们详细看一 ...
- idea类似eclipse鼠标提示java api信息
<ignore_js_op> 详细说明:http://java.662p.com/thread-2615-1-1.html
- linux查找日志常用命令
1.查找文件test中目标字符串(xxxx)出现的行数位置grep -n xxxx test 2.文件test从某一行(n)开始显示more +n test 3.查询文件test中出现目标字符串x ...