综合例题及补充

目录

查询员工的编号、姓名、雇佣日期,以及计算出每一位员工到今天为止被雇佣的年数、月数、天数

计算出年

计算月

计算天数


Oracle从入门到总裁:https://blog.csdn.net/weixin_67859959/article/details/135209645

查询员工的编号、姓名、雇佣日期,以及计算出每一位员工到今天为止被雇佣的年数、月数、天数

对于本查询而言,由于日期的跨度较长 ,所以要想准确地计算出结果,必须结合日期函数

计算出年

如果要计算年,按照月来计算是比较准确的,那么一定要使用 months_between() 函数进行月 的计算,而后除以 12 就是年

SQL> select empno,ename,hiredate,trunc(months_between(sysdate,hiredate)/12) year2  from emp;EMPNO ENAME                HIREDATE             YEAR
---------- -------------------- -------------- ----------7369 SMITH                17-12月-80             437499 ALLEN                20-2月 -81             427521 WARD                 22-2月 -81             427566 JONES                02-4月 -81             427654 MARTIN               28-9月 -81             427698 BLAKE                01-5月 -81             427782 CLARK                09-6月 -81             427839 KING                 17-11月-81             427844 TURNER               08-9月 -81             427900 JAMES                03-12月-81             427902 FORD                 03-12月-81             42

计算月

年的计算结果包含余数,余数实际上就是除 12 的结果,也就是月数。利用 mod() 函数可以求出余数

SQL> select empno,ename,hiredate,2  trunc(months_between(sysdate,hiredate)/12) year,3  trunc(mod(months_between(sysdate,hiredate),12)) months4  from emp;EMPNO ENAME                HIREDATE             YEAR     MONTHS
---------- -------------------- -------------- ---------- ----------7369 SMITH                17-12月-80             43          17499 ALLEN                20-2月 -81             42         117521 WARD                 22-2月 -81             42         117566 JONES                02-4月 -81             42         107654 MARTIN               28-9月 -81             42          47698 BLAKE                01-5月 -81             42          97782 CLARK                09-6月 -81             42          87839 KING                 17-11月-81             42          27844 TURNER               08-9月 -81             42          57900 JAMES                03-12月-81             42          27902 FORD                 03-12月-81             42          2

计算天数

现在所知道的计算天数的操作只有一个公式: “日期 1 - 日期 2 = 数字(天数) ” 。于是现在的问题 就集中在了日期的内容上

● 日期 1,一定是当前日期,使用 sysdate伪列

● 日期 2,实际上已经可以利用 months_between() 函数求出两个日期之间的月数

 

SQL> select empno,ename,hiredate,2  trunc(months_between(sysdate,hiredate)/12) year,3  trunc(mod(months_between(sysdate,hiredate),12)) months,4  trunc(sysdate-add_months(hiredate,months_between(sysdate,hiredate))) day5  from emp;EMPNO ENAME                HIREDATE             YEAR     MONTHS        DAY
---------- -------------------- -------------- ---------- ---------- ----------7369 SMITH                17-12月-80             43          1         277499 ALLEN                20-2月 -81             42         11         247521 WARD                 22-2月 -81             42         11         227566 JONES                02-4月 -81             42         10         117654 MARTIN               28-9月 -81             42          4         167698 BLAKE                01-5月 -81             42          9         127782 CLARK                09-6月 -81             42          8          47839 KING                 17-11月-81             42          2         277844 TURNER               08-9月 -81             42          5          57900 JAMES                03-12月-81             42          2         107902 FORD                 03-12月-81             42          2         10

 假设现在需要截取数据表中每个姓名的后三个字母,常用的做法如下。
首先一定要确认截取的开始点,每个姓名的长度不一样,所以开始点也不同。此时 最好的做法是使用 length() 来计算长度

SQL> select ename,substr(ename,length(ename)-2)2  from emp;ENAME                SUBSTR(ENAME,LENGTH(ENAME)-2)
-------------------- --------------------------------------------------------------------------------
SMITH                ITH
ALLEN                LEN
WARD                 ARD
JONES                NES
MARTIN               TIN
BLAKE                AKE
CLARK                ARK
KING                 ING
TURNER               NER
JAMES                MES
FORD                 ORD

但是 substr() 可以设置负数索引,表示从后向前数

SQL> select ename,substr(ename,-3)2  from emp;ENAME                SUBSTR(ENAME,-3)
-------------------- ------------------------
SMITH                ITH
ALLEN                LEN
WARD                 ARD
JONES                NES
MARTIN               TIN
BLAKE                AKE
CLARK                ARK
KING                 ING
TURNER               NER
JAMES                MES
FORD                 ORD

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

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

相关文章

【开源】基于JAVA+Vue+SpringBoot的学生综合素质评价系统

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 学生功能2.2 教师功能2.3 教务处功能 三、系统展示四、核心代码4.1 查询我的学科竞赛4.2 保存单个问卷4.3 根据类型查询学生问卷4.4 填写语数外评价4.5 填写品德自评问卷分 五、免责说明 一、摘要 1.1 项目介绍 基于J…

【Spring】Bean 的作用域

一、singleton 默认情况下,Spring 的 IoC 容器创建的 Bean 对象是单例的(单例模式) 默认情况下,Bean 对象的创建是在初始化 Spring 上下文的时候就完成的 package org.qiu.spring.bean;/*** author 秋玄* version 1.0* email q…

【c++基础】温度统计员

说明 炎热的夏日&#xff0c;KC非常的不爽。他宁可忍受北极的寒冷&#xff0c;也不愿忍受厦门的夏天。最近&#xff0c;他开始研究天气的变化。他希望用研究的结果预测未来的天气。 经历千辛万苦&#xff0c;他收集了连续N&#xff08;1<N<10000&#xff09;天的最高气温…

idea:如何连接数据库

1、在idea中打开database: 2、点击 ‘’ ---> Data Source ---> MySQL 3、输入自己的账号和密码其他空白处可以不填&#xff0c;用户和密码可以在自己的mysql数据库中查看 4、最后选择自己需要用的数据库&#xff0c;点击运用ok&#xff0c;等待刷新即可 最后&#xff1a…

C# EventHandler<T> 示例

新建一个form程序&#xff0c;在调试窗口输出执行过程&#xff1b; 为了使用Debug.WriteLine&#xff0c;添加 using System.Diagnostics; using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using S…

celery异步框架的使用

文章目录 celery的介绍celery的架构celery的快速使用celery 包结构celery 定时 异步 延迟任务django使用celery celery的介绍 celery是什么&#xff1f; -翻译过来是芹菜 -官网&#xff1a;https://docs.celeryq.dev/en/stable/ -吉祥物&#xff1a;芹菜 -分布式的异步任务框架…

MySQL数据库⑨_事务(四个属性+回滚提交+隔离级别+MVCC)

目录 1. 事务的概念和四个属性 2. 事务的支持版本 3. 事务的提交方式 4. 事务的相关演示 4.1 常规操作_回滚_提交 4.2 原子性_演示 4.3 持久性_演示 4.4 begin自动更改提交方式 4.5 单条SQL与事务的关系 5. 事务的隔离级别 5.1 四种隔离级别 5.2 查看与设置隔离级别…

HarmonyOS 鸿蒙 ArkTS ArkUI 页面之间切换转换动画设置

第一步&#xff1a;导入 import promptAction from ohos.promptAction 第二步&#xff1a;在build下方写入 pageTransition(){PageTransitionEnter({ duration: 1200 }).slide(SlideEffect.Right)PageTransitionExit({ delay: 100 }).translate({ x: 100.0, y: 100.0 }).opac…

Servlet验证技术

验证技术 验证是验证用户信息并确定该用户是否有权访问服务器资源的过程。用于验证用户信息的各种验证技术包括: 基本验证基于表单的验证摘要验证客户机整数验证1. 基本验证 网站可能包含两种类型的网站,即受保护和不受保护网页。默认情况下,所有用户都可以访问不受保护或者…

学习Python需要准备什么?BoBo仔为您指点明经~~~

前言 大家好&#xff01;我是bobo仔&#xff0c;欢迎来阅读我的文章。我的这篇文章是专门为Python新手筹备的&#xff0c;大家一定要好好阅读&#xff0c;做好每一步&#xff0c;完成每一节。 【注&#xff1a;部分内容为作者见解、发现&#xff0c;如有版权侵袭或是信息错误…

类与结构体(6)

我们上一起讲了这一期讲存储类和继承&#xff0c;这个难度很大的。 存储类 存储类主要规定了函数和变量的范围&#xff0c;在c中有这些存储类↓&#xff1a; ৹ auto&#xff08;自动判断函数是什么类型&#xff09; ৹ register (常用的变量和inline差不多&#xff0c;但应…

【Java程序设计】【C00253】基于Springboot的在线考试管理系统(有论文)

基于Springboot的在线考试管理系统&#xff08;有论文&#xff09; 项目简介项目获取开发环境项目技术运行截图 项目简介 这是一个基于Springboot的在线考试系统 本系统分为系统功能模块、管理员功能模块以及用户功能模块。 系统功能模块&#xff1a;系统登录&#xff0c;管理…