Oracle中日期的使用方法实例


Posted in Oracle onJuly 07, 2022

前言

在使用sql函数时,因项目数据库不同,导致sql中日期的使用方法大不相同, 一些常见的日期计算,都有不同的应用,故整理记录一下Oracle的日期用法。
以user表为例

CREATE TABLE "SCOTT"."user" 
   (	"id" NUMBER(20,0) NOT NULL ENABLE, 
	"name" VARCHAR2(30), 
	"age" NUMBER(11,0), 
	"email" VARCHAR2(50), 
	"crt_time" DATE, 
	 PRIMARY KEY ("id")
  USING INDEX PCTFREE 10 INITRANS 2 MAXTRANS 255 NOCOMPRESS LOGGING
  TABLESPACE "USERS"  ENABLE
   ) SEGMENT CREATION DEFERRED 
  PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING
  TABLESPACE "USERS"



-- 添加基础数据
INSERT INTO "SCOTT"."user"("id", "name", "age", "email", "crt_time") VALUES ('1', 'Jone', '18', '''test1@baomidou.com', TO_DATE('2022-04-01 22:20:02', 'SYYYY-MM-DD HH24:MI:SS'));
INSERT INTO "SCOTT"."user"("id", "name", "age", "email", "crt_time") VALUES ('2', 'Jone', '20', '''test2@baomidou.com', TO_DATE('2022-04-02 22:20:02', 'SYYYY-MM-DD HH24:MI:SS'));
INSERT INTO "SCOTT"."user"("id", "name", "age", "email", "crt_time") VALUES ('3', 'Jone', '28', '''test3@baomidou.com', TO_DATE('2022-04-03 22:20:02', 'SYYYY-MM-DD HH24:MI:SS'));
INSERT INTO "SCOTT"."user"("id", "name", "age", "email", "crt_time") VALUES ('4', 'Jone', '21', '''test4@baomidou.com', TO_DATE('2022-04-04 22:20:02', 'SYYYY-MM-DD HH24:MI:SS'));
INSERT INTO "SCOTT"."user"("id", "name", "age", "email", "crt_time") VALUES ('5', 'Jone', '24', '''test5@baomidou.com', TO_DATE('2022-04-05 22:20:02', 'SYYYY-MM-DD HH24:MI:SS'));
INSERT INTO "SCOTT"."user"("id", "name", "age", "email", "crt_time") VALUES ('6', 'Jone', '12', '''test6@baomidou.com', TO_DATE('2022-04-06 22:20:02', 'SYYYY-MM-DD HH24:MI:SS'));

1 日期等于\大于\小于

Oracle中日期的大小比较,通常是转换成字符串来进行比较.

说明:

  • dual是oracle中定义的一个内部表,只有一行一列
  • SYSDATE函数表示当前时间
  • to_char(date,‘format’)函数, 参数date为日期类型,参数format表示转换的格式,常用的是'yyyy-mm-dd hh24:mi:ss' (大小写敏感)
-- 查看两个时间
select TO_DATE('2022-04-04 22:20:02', 'SYYYY-MM-DD HH24:MI:SS') , SYSDATE 
FROM dual

-- 结果
-- 2022-04-04 22:20:02	2022-04-10 22:31:43

-- 简单案例
-- 1 时间比较 因传入时间小于当前时间  结果集为空
select TO_DATE('2022-04-04 22:20:02', 'SYYYY-MM-DD HH24:MI:SS') , SYSDATE 
FROM dual
where 
TO_DATE('2022-04-04 22:20:02', 'SYYYY-MM-DD HH24:MI:SS') > SYSDATE 
-- 	空串  空串

-- 2 时间比较 因传入时间小于当前时间  结果集有值
select TO_DATE('2022-04-04 22:20:02', 'SYYYY-MM-DD HH24:MI:SS') , SYSDATE 
FROM dual
where 
TO_DATE('2022-04-04 22:20:02', 'SYYYY-MM-DD HH24:MI:SS') < SYSDATE 

-- 2022-04-04 22:20:02	2022-04-10 22:37:50

2 日期差值计算

需求: 计算两个时间的天数差

1 直接将两个时间来相减

两个日期相减,得到的是精度为时分秒的数据,不符合要求

SELECT 
	SYSDATE- to_date('2022-04-10 22:20:02','yyyy-mm-dd hh24:mi:ss')
FROM 
	dual
-- 结果 0.0181365740740740740740740740740740740741

2 时间和日期的两层转换

to_date(string,‘format’)函数,是将字符串转换为date时间.

SELECT
   to_date(to_char(SYSDATE,'yyyy-mm-dd'),'YYYY-MM-DD HH24:MI:SS') - to_date(to_char(to_date( '2022-04-10 22:20:02', 'YYYY-MM-DD HH24:MI:SS' ) ,'yyyy-mm-dd'),'YYYY-MM-DD HH24:MI:SS')
FROM
   dual;
-- 结果: 0

此种方法比较繁琐,且经过多次转换,效率较低.

3 使用trunc函数

trunc()函数.

作用: 用于截取时间或者数值,返回指定的值.

日期处理:

TRUNC(date,[format])

  • date 为必要参数,是输入的一个date日期值.
  • format参数可忽略,指定日期格式,缺省时表示指定日期的0点.
SELECT
	SYSDATE,
	to_date( '2022-04-10 22:20:02', 'YYYY-MM-DD HH24:MI:SS' ),
    trunc(SYSDATE) - trunc(to_date( '2022-04-10 22:20:02', 'YYYY-MM-DD HH24:MI:SS' ))
FROM
   dual;

此外,该函数还可以用于数值处理.

TRUNC(number,[decimals])

  • number 为必要参数,是输入的一个number数值.
  • decimals 参数可忽略,指定截取的位数,缺省时表示截掉小数点后边的值
SELECT
3.0,
2.22,
    trunc(3.0) - trunc(2.22,1)
FROM
    dual;
-- 结果 3    2.22    0.8

总结

到此这篇关于Oracle中日期使用的文章就介绍到这了,更多相关Oracle日期使用内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Oracle 相关文章推荐
oracle DGMGRL ORA-16603报错的解决方法(DG Broker)
Apr 06 Oracle
使用springboot暴露oracle数据接口的问题
May 07 Oracle
zabbix agent2 监控oracle数据库的方法
May 13 Oracle
oracle覆盖导入dmp文件的2种方法
May 21 Oracle
Oracle11g R2 安装教程完整版
Jun 04 Oracle
ORACLE数据库应用开发的三十个注意事项
Jun 07 Oracle
详解Oracle块修改跟踪功能
Nov 07 Oracle
Oracle数据库中通用的函数实例详解
Mar 25 Oracle
在Oracle表中进行关键词搜索的过程
Jun 10 Oracle
Oracle中日期的使用方法实例
Jul 07 Oracle
oracle设置密码复杂度及设置超时退出的功能
Jun 28 #Oracle
Oracle删除归档日志及添加定时任务
Jun 28 #Oracle
oracle delete误删除表数据后如何恢复
Jun 28 #Oracle
ORACLE中dbms_output.put_line输出问题的解决过程
Jun 28 #Oracle
Oracle 11g数据库使用expdp每周进行数据备份并上传到备份服务器
Jun 28 #Oracle
Oracle数据库事务的开启与结束详解
Jun 25 #Oracle
在Oracle表中进行关键词搜索的过程
Jun 10 #Oracle
You might like
jQuery 源码分析笔记
2011/05/25 PHP
php之readdir函数用法实例
2014/11/13 PHP
PHP实现小程序批量通知推送
2018/11/27 PHP
Javascript remove 自定义数组删除方法
2009/10/20 Javascript
jQuery阻止同类型事件小结
2013/04/19 Javascript
使用 Node.js 做 Function Test实现方法
2013/10/25 Javascript
jquery如何扑捉回车键触发的事件
2014/04/24 Javascript
js实现感应鼠标图片透明度变化的方法
2015/02/20 Javascript
JavaScript中三种异步上传文件方式
2016/03/06 Javascript
js数组常用操作方法小结(增加,删除,合并,分割等)
2016/08/02 Javascript
客户端(vue框架)与服务器(koa框架)通信及服务器跨域配置详解
2017/08/26 Javascript
jQuery EasyUI 折叠面板accordion的使用实例(分享)
2017/12/25 jQuery
微信小程序scroll-view实现字幕滚动
2018/07/14 Javascript
11个教程中不常被提及的JavaScript小技巧(推荐)
2019/04/17 Javascript
vue实现跨域的方法分析
2019/05/21 Javascript
微信小程序的引导页实现代码
2020/06/24 Javascript
JS实现按比例缩小图片宽高
2020/08/24 Javascript
vue 通过 Prop 向子组件传递数据的实现方法
2020/10/30 Javascript
[01:20]DOTA2 2017国际邀请赛冠军之路无止竞
2017/06/19 DOTA
Python使用xlrd读取Excel格式文件的方法
2015/03/10 Python
python验证码识别教程之灰度处理、二值化、降噪与tesserocr识别
2018/06/04 Python
PyTorch: 梯度下降及反向传播的实例详解
2019/08/20 Python
Python运行异常管理解决方案
2020/03/09 Python
python如何绘制疫情图
2020/09/16 Python
在线服装零售商:SheIn
2016/07/22 全球购物
微软澳洲官方网站:Microsoft Australia
2017/01/10 全球购物
eDreams加拿大:廉价航班、酒店和度假
2019/03/29 全球购物
澳大利亚在线高跟鞋商店:Shoe Me
2019/11/19 全球购物
财政局长自荐信范文
2013/12/22 职场文书
婚庆公司的创业计划书
2014/01/22 职场文书
自荐书范文范例
2014/02/13 职场文书
民事诉讼代理委托书
2014/10/08 职场文书
单位作风建设自查报告
2014/10/23 职场文书
小学毕业感言200字
2015/07/30 职场文书
SpringBoot工程下使用OpenFeign的坑及解决
2021/07/02 Java/Android
td 内容自动换行 table表格td设置宽度后文字太多自动换行
2022/12/24 HTML / CSS