oracle 日期

日期加减

Oracle中日期进行加减可以使用多种方式,以下介绍三种
一种是针对天的操作,适用于对日,时,分,秒的操作,
一种是对月的操作,适用于月,年的操作,
一种是使用INTERVAL函数,适用于年,月,日,时,分,秒的操作

直接加减数字

  • 加一天
select sysdate "当前时间",sysdate+1 "当前时间加一天" from dual ;

结果:

2023-11-02 17:09:46	|	2023-11-03 17:09:46

灵活使用

SELECTSYSDATE "当前时间",SYSDATE + 1 "加一天",SYSDATE + (1 / 24) "加一小时",SYSDATE + (1 / 24 / 60) "加一分钟",SYSDATE + (1 / 24 / 60 / 60) "加一秒钟",SYSDATE - 1 "减一天"
FROMdual;

结果:

2023-11-02 17:14:41	|	2023-11-03 17:14:41	|	2023-11-02 18:14:41	|	2023-11-02 17:15:41	|	2023-11-02 17:14:42	|	2023-11-01 17:14:41

通过ADD_MONTHS()函数

  • 加一个月
select sysdate "当前时间",ADD_MONTHS(sysdate, 1) "加一月" from dual ;

结果

2023-11-02 17:18:31	|	2023-12-02 17:18:31

灵活使用

SELECTSYSDATE "当前时间",ADD_MONTHS (SYSDATE, 1) "加一月",ADD_MONTHS (SYSDATE, - 1) "减一月",ADD_MONTHS (SYSDATE, 1 * 12) "加一年",ADD_MONTHS (SYSDATE, - 1 * 12) "减一年"
FROMdual;

结果:

2023-11-02 17:20:09	2023-12-02 17:20:09	2023-10-02 17:20:09	2024-11-02 17:20:09	2022-11-02 17:20:09

使用INTERVAL函数

语法:INTERVAL ‘时间差数值’ { YEAR | MONTH | DAY | HOUR | MINUTE | SECODE} (精度数值)

得出的是相应类型的时间差,注意精度数值范围是1-9,不写默认值是2,精度不匹配时间差数值会报错
例如:当前时间加1,11,111年

SELECTSYSDATE "当前时间",SYSDATE + INTERVAL '1' YEAR "加1年",          -- 精度数值不写时是默认两位,此处可以写精度为1-9SYSDATE + INTERVAL '11' YEAR "加11年",        -- 此处可以不写,可以是1-9SYSDATE + INTERVAL '11' YEAR(2) "加11年",     -- 可以写2-9SYSDATE + INTERVAL '111' YEAR(3) "加111年",   -- 此处必须写精度,精度值3-9SYSDATE + INTERVAL '111' YEAR (9) "加111年"   -- 精度值可以大于当前精度,不能小于当前数值精度,不能超过9
FROMdual;

结果:

2023-11-02 17:22:22	2024-11-02 17:22:22	2034-11-02 17:22:22	2034-11-02 17:22:22	2134-11-02 17:22:22	2134-11-02 17:22:22

灵活运用

SELECTSYSDATE "当前时间",SYSDATE + INTERVAL '1' YEAR "加一年",SYSDATE + INTERVAL '-1' YEAR "减一年",SYSDATE + INTERVAL '1' MONTH "加一月",SYSDATE + INTERVAL '1' DAY "加一天",SYSDATE + INTERVAL '1' HOUR "加一小时",SYSDATE + INTERVAL '1' MINUTE "加一分钟",SYSDATE + INTERVAL '1' SECOND "加一秒"
FROMdual;

结果

2023-11-02 17:25:31	2024-11-02 17:25:31	2022-11-02 17:25:31	2023-12-02 17:25:31	2023-11-03 17:25:31	2023-11-02 18:25:31	2023-11-02 17:26:31	2023-11-02 17:25:32

精度的使用同上,当然oracle数据库对于时间大小也是有限制的,年份范围是 -4713 和 +9999 之间, 且不为 0

计算两个日期间隔的天数、月数和年数

天数

在Oracle中,两个日期直接相减,便可以得到天数;

select to_date('08/06/2015','mm/dd/yyyy')-to_date('07/01/2015','mm/dd/yyyy') from dual;返回结果:36

月数

计算月数,需要用到months_between函数;

--months_between(date1,date2)   
--如果两个日期中“日”相同,或分别是所在月的最后一天,那么返回的结果是整数。否则,返回的结果将包含一个分数部分(以31天为一月计算)     
select months_between(to_date('01/31/2015','mm/dd/yyyy'),to_date('12/31/2014','mm/dd/yyyy')) "MONTHS" FROM DUAL;      
返回结果: 1    select months_between(to_date('01/01/2015','mm/dd/yyyy'),to_date('12/31/2014','mm/dd/yyyy')) "MONTHS" FROM DUAL;      
返回结果: 0.032258064516129
select abs(trunc(months_between(sysdate , to_date('01/31/2015','mm/dd/yyyy'))))from dual;
select ceil(trunc(months_between(sysdate , to_date('01/31/2015','mm/dd/yyyy'))))from dual;
select floor(trunc(months_between(sysdate , to_date('01/31/2015','mm/dd/yyyy'))))from dual;

年数

计算年数,是通过计算出月数,然后再除以12;(也许会有更好的办法,目前还不知道)

select trunc(months_between(to_date('08/06/2015','mm/dd/yyyy'),to_date('08/06/2013','mm/dd/yyyy'))/12) from dual;--返回结果:2

相差小时数、分钟数、秒数

Oracle中两个日期相差小时数

select TO_NUMBER((TO_DATE('2018-6-5 12:00:00','yyyy-mm-dd hh24:mi:ss')- TO_DATE('2018-6-4 00:00:00','yyyy-mm-dd hh24:mi:ss'))*24) AS 相差小时数 from dual;

Oracle中两个日期相差分钟数

select TO_NUMBER((TO_DATE('2018-6-5','yyyy-mm-dd hh24:mi:ss')- TO_DATE('2018-5-31','yyyy-mm-dd hh24:mi:ss'))*24*60) AS 相差分钟数 from dual;

Oracle中两个日期相差秒数

select TO_NUMBER((TO_DATE('2018-6-5','yyyy-mm-dd hh24:mi:ss')- TO_DATE('2018-5-31','yyyy-mm-dd hh24:mi:ss'))*24*60*60) AS 相差秒数 from dual;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/128486.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C++之队列queue

1.知识百科 队列是一种特殊的线性表,特殊之处在于它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作,和栈一样,队列是一种操作受限制的线性表。进行插入操作的…

【Azure】存储服务:Azure 的存储账户

文章目录 一、前提知识(建议了解)二、介绍 Azure 存储帐户三、使用 Microsoft Azure 门户创建存储帐户 一、前提知识(建议了解) 在每一个云厂商中,都有自身的云存储,也有根据不同功能进行区分的不同类型的…

Vue3 setup 父组件直接触发调用子组件方法

1、使用ref获取组件 <base-form ref"baseFormComponents"></base-form> const baseFormComponents ref(null) 2、defineExpose出需要使用的方法 const submit (e) > {form1.value.validate(valid > {if (valid) {uni.showToast({title: &quo…

资源限流 + 本地分布式多重锁——高并发性能挡板,隔绝无效流量请求

前言 在高并发分布式下&#xff0c;我们往往采用分布式锁去维护一个同步互斥的业务需求&#xff0c;但是大家细想一下&#xff0c;在一些高TPS的业务场景下&#xff0c;让这些请求全部卡在获取分布式锁&#xff0c;这会造成什么问题&#xff1f; 瞬时高并发压垮系统 众所周知…

python---数据类型(字符串、数字、列表)

一、变量的命名和使用 变量名只能包含字母、数字和下划线。变量名可以字母或下划线开头&#xff0c;不能以数字开头变量名不能包含空格&#xff0c;但可使用下划线分隔其中的单词。不要将Python关键字和函数名用做变量名。不要使用Python保留用于特殊用途的单词&#xff0c;如…

USB PD v1.0快速充电通信原理

1 原理 本篇文章讲的快速充电是指USB论坛所发布的USB Power Delivery快速充电规范&#xff08;通过VBUS直流电平上耦合FSK信号来请求充电器调整输出电压和电流的过程&#xff09;&#xff0c;不同于本人发布的另一篇文章所讲的高通Quick Charger 2.0规范&#xff0c;因为高通QC…

Servlet 上下文参数

7)Servlet上下文对象&#xff1a;ServletContext生活中的例子&#xff1a;张三和李四在不远处窃窃私语&#xff0c;并且频繁的对着你坏笑。你肯定会跑过去问&#xff1a;你们俩在聊什么&#xff1f;注意&#xff1a;此处的聊什么&#xff0c;其实就是你在咨询他们聊天的上下文&…

微信小程序实现同一页面左右滑动无限切换上/下一页结合后端请求数据,带滑动动画

🤵 作者:coderYYY 🧑 个人简介:前端程序媛,目前主攻web前端,后端辅助,其他技术知识也会偶尔分享🍀欢迎和我一起交流!🚀(评论和私信一般会回!!) 👉 个人专栏推荐:《前端项目教程以及代码》 💎 本文摘要:原生微信小程序(uniapp同理)实现详情页左右滑动…

【进程控制⑦】:制作简易shell理解shell运行原理

【进程控制⑦】&#xff1a;制作简易shell&&理解shell运行原理 一.交互问题&#xff0c;获取命令行二.字串分割问题&#xff0c;解析命令行三.指令的判断四.普通命令的执行五.shell原理本质 一.交互问题&#xff0c;获取命令行 shell刚启动时就会出现一行命令行&#x…

识别鼠标选中actor_vtkInteractorStyleTrackballActor

开发环境&#xff1a; Windows 11 家庭中文版Microsoft Visual Studio Community 2019VTK-9.3.0.rc0vtk-example参考代码目的&#xff1a;学习与总结 demo解决问题&#xff1a;通过自定义vtkInteractorStyle类中成员函数OnLeftButtonDown&#xff0c;判断鼠标当前选中的是哪个…

组件化npm包打包和使用

背景&#xff1a;本地环境对功能组件提取&#xff0c;开发环境下通过本地路径引用&#xff0c;发布模式下走npm包引用 1、项目下新建packages/HelloWorld文件夹&#xff0c;在此文件夹下运行终端 npm init 新建packages/HelloWorld/index.vue文件 新建packages/HelloWorld/ind…

时间同步

本机192.168.3.6 sudo service ntp restart sudo /etc/init.d/ntp stop sudo ntpdate 192.168.3.7

uniapp黑马优购

配置tabbar 使用 npm install escook/request-miniprogram 进行http请求 挂载到 uni.$http 上 uniapp小程序分包 访问的时候 携带分包目录 /subpkg/goods_detail/goods_detail git分支使用 # 创建并使用分支 git checkout -b home git commit # 推送到远程的home分支…

自己动手实现一个深度学习算法——三、神经网络的学习

文章目录 1.从数据中学习1&#xff09;数据驱动2&#xff09;训练数据和测试数据 2.损失函数1)均方误差2)交叉熵误差3)mini-batch学习 3.数值微分1&#xff09;概念2&#xff09;数值微分实现 4.梯度1&#xff09;实现2&#xff09;梯度法3&#xff09;梯度法实现4&#xff09;…

cpu算力DMIPS说明

DMIPS即以dhrystone程式为测量方式标准的mips值&#xff0c;DMIPS即million instruction per second&#xff0c;每秒百万个指令&#xff0c;即处理器每秒能运行多少百万个指令。 D是Dhrystone的缩写&#xff0c;表示的是基于Dhrystone这样一种测试方法下的 MIPSQ。Dhrystone是…

c++一些知识点

1.在release版本中用assert断言 在#include "assert.h"前面加上#undef NDEBUG #undef NDEBUG #include "assert.h"2.[待解决] 同一份代码 在DEBUG版本出现error LNK2005: 已经在 .obj 中定义 在release版本中就正常

二叉树(9.7)

目录 1.树概念及结构 1.1树的概念 1.2 树的相关概念 1.3 树的表示 2.二叉树概念及结构 2.1概念 2.2 特殊的二叉树 2.4 二叉树的存储结构 3.二叉树顺序结构及实现 3.1 二叉树的顺序结构 3.2 堆的概念及结构 1.树概念及结构 1.1树的概念 前面我们学习的都是组成简…

element-ui input 输入框赋值后,无法再输入的问题解决

问题 dialog弹出框里的form表单&#xff0c;打开后给输入选项赋值&#xff0c;改选项无法再输入。问题代码&#xff1a; <el-form :model"form" ref"formRef" label-width"120px" size"small"><el-form-item label"业务…

记一次有趣的免杀探索

文章目录 前记查杀排查源码修改免杀效果测试 前记 evilhiding昨天被提issue不能绕过火绒了&#xff0c;于是今天更新了evilhiding v1.1&#xff0c;已经可以继续免杀了。 期待各位的stars&#xff0c;项目地址如下&#xff1a; https://github.com/coleak2021/evilhiding查杀…

在Win10系统进行MySQL的安装、连接、卸载

在Win10系统进行MySQL的安装、连接、卸载 MySQL的安装 本教程在Win10系统下安装部署MySQL-8.0.32版。 MySQL安装参考地址 MySQL安装包地址 提取码: rnbc。 选择下载mysql-installer-community-8.0.32.0安装包。 连接数据库 方式一&#xff1a; 安装后&#xff0c;可以在开始…