oracle 计算时间差,包含年、月、日、时、分、秒

在做系统时,如图书管理系统、车辆管理系统、事务管理系统等,经常需要我们计算两个日期相差多少天,图书是否应该归还,事情是否完成等。

今天给大家分享oracle 中如何计算时间差

oracle时间差是以天数为单位,所以换算成年月,日

select floor(to_number(sysdate-to_date('2018-11-02 15:55:03','yyyy-mm-dd hh24:mi:ss'))/365) as spanYears from dual       //年
select ceil(moths_between(sysdate-to_date('2018-11-02 15:55:03','yyyy-mm-dd hh24:mi:ss'))) as spanMonths from dual       //月
select floor(to_number(sysdate-to_date('2018-11-02 15:55:03','yyyy-mm-dd hh24:mi:ss'))) as spanDays from dual            //天
select floor(to_number(sysdate-to_date('2018-11-02 15:55:03','yyyy-mm-dd hh24:mi:ss'))*24) as spanHours from dual        //时
select floor(to_number(sysdate-to_date('2018-11-02 15:55:03','yyyy-mm-dd hh24:mi:ss'))*24*60) as spanMinutes from dual   //分
select floor(to_number(sysdate-to_date('2018-11-02 15:55:03','yyyy-mm-dd hh24:mi:ss'))*24*60*60) as spanSeconds from dual//秒

oracle日期格式

to_date(“要转换的字符串”,”转换的格式”)   两个参数的格式必须匹配,否则会报错。即按照第二个参数的格式解释第一个参数。

to_char(日期,”转换格式” ) 即把给定的日期按照“转换格式”转换。

转换的格式:

表示year的:y 表示年的最后一位 yy 表示年的最后2位 yyy 表示年的最后3位 yyyy 用4位数表示年

表示month的:mm 用2位数字表示月;mon 用简写形式 比如11月或者nov ;month 用全称 比如11月或者november

表示day的:dd 表示当月第几天;ddd表示当年第几天;dy 当周第几天 简写 比如星期五或者fri;day当周第几天 全写

比如星期五或者friday。

表示hour的:hh 2位数表示小时 12进制; hh24 2位数表示小时 24小时

表示minute的:mi 2位数表示分钟

表示second的:ss 2位数表示秒 60进制

表示季度的:q 一位数 表示季度 (1-4)

另外还有ww 用来表示当年第几周 w用来表示当月第几周。

24小时制下的时间范围:00:00:00-23:59:59

12小时制下的时间范围:1:00:00-12:59:59

比如:

select to_char(sysdate,’yy-mm-dd hh24:mi:ss’) from dual   //显示:08-11-07 13:22:42

select to_date(‘2005-12-25,13:25:59′,’yyyy-mm-dd,hh24:mi:ss’) from dual //显示:2005-12-25 13:25:59

而如果把上式写作:select to_date(‘2005-12-25,13:25:59′,’yyyy-mm-dd,hh:mi:ss’) from dual,则会报错,因为小时hh是12进制,13为非法输入,不能匹配。

125jz网原创文章。发布者:江山如画,转载请注明出处:http://www.125jz.com/1254.html

(0)
江山如画的头像江山如画管理团队
如何开好网店:产品做低价,还是差异化?
上一篇 2018年2月13日 上午11:00
移动网站被百度转码的问题及解决方案
下一篇 2018年2月13日 下午1:08

99%的人还看了以下文章

  • Java JDBC操作Mysql数据库增删改查,分页查询实例详解(源码)

    配置信息 public static final String USER_NAME = “root”; public static final String PWD = “123456789”; public static final String DRIVER = “com.mysql.jdbc.Driver”; public static final S…

    2020年2月19日
    8.1K0
  • 第二课:Maven的下载安装及环境变量配置

    第二课:Maven的下载安装及环境变量配置第二课:Maven的下载安装及环境变量配置第二课:Maven的下载安装及环境变量配置第二课:Maven的下载安装及环境变量配置

    一、Maven的下载 下载地址:http://maven.apache.org/download.cgi 下载完成后,得到一个压缩包apache-maven-***-bin.zip,解压,可以看到maven的组成目录 Maven目录分析 bin:含有mvn运行的脚本 boot:含有plexus-classworlds类加载器框架 conf:含有setting…

    2023年1月27日 编程开发
    7.5K0
  • Java向mysql数据库插入datetime类型数据实例(精)

    在Mysql数据库中日期跟时间有两种: 1、date类型,date类型也就是我们常见的储存yyyy-MM-dd类型的日期,它不能储存时间,也就是只能储存日期, 2、dateitme就是可以储存日期同时也可以储存时间。 datetime可以保存1000-01-01到 9999-12-31的日期。 上面mysql数据库中birthday字段类型设置的是datet…

    2018年5月2日
    20.6K0
  • HTML5- Canvas入门(一)画线

    canvas是一个H5的标签: <canvas> </canvas> canvas本身没有任何的绘图能力,所有的绘图工作都是通过js来实现的。通常我们在js通过getElementById来获取要操作的canvas(这意味着咱得给canvas设个id): <canvas id=”myCanvas”></canvas&…

    2022年7月9日
    6.7K0
  • 表单method方式为post或get中文乱码的解决方法

    表单method方式为post中文乱码解决方法 ■设置请求和响应的编码方式 request.setCharacterEncoding(“utf-8”); response.setCharacterEncoding(“utf-8”); 表单method方式为get中文乱码解决方法 ■治标的方法: new String(s.getBytes(”iso-8859-…

    2019年12月17日
    9.7K0
  • 什么是单元测试,单元测试快速入门教程一

    单元测试概述 单元测试是在软件开发过程中要进行的最低级别的测试活动或者说是针对软件设计的最小单位—程序模块(程序中定义的函数、子程序、类或方法),进行正确性检验的测试工作,目的在于发现每个程序模块内部可能存在的差错或缺陷。 在单元测试活动中,软件的独立单元将在与程序的其它部分相隔离的情况下进行测试,主要工作分人工静态检查(静态测试)和动态执行跟踪(动态测试)…

    2018年4月16日
    8.5K0

发表回复

登录后才能评论