对比mysql学习oracle函数(三):oracle单行函数—日期函数(一)

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: 对比mysql学习oracle函数(三):oracle单行函数—日期函数(一)

1、单行函数分类:一行记录,返回一行结果;

image.png


1)日期函数介绍

image.png


关于上图知识点,我们只关注一个知识点,Oracle中,默认显示的时间格式是“日-月-年”。

当oracle服务端的字符集是simplified chinese_china.al32utf8或simplified chinese_china.zhs16gbk的时候,那么时间格式缺省显示类似于:2003-1月-28。

当oracle服务端的字符集是us7ascii字符集的,缺省的时间格式显示为:28-Jan-2003。

当然,SIMPLIFIEDCHINESE_CHINA.AL32UTF8是最好的,可以兼容多国文字。当然oracle服务端字符集的修改,也不是由我们来决定的,这是DBA的事儿。

查看oracle字符集使用如下网址:

https://blog.csdn.net/Lizi_TT/article/details/89917565

SQL> select userenv('language') from dual;
USERENV('LANGUAGE')
----------------------------------------------------
SIMPLIFIED CHINESE_CHINA.AL32UTF8


 我的数据库服务端的字符集,如上所示,所以时间格式缺省显示类似于:2003-1月-28。因此在进行数据筛选的时候,也必须采用同样的格式,进行时间筛选,否则会报错。


SQL> select empno,ename,hiredate from emp where hiredate='17-12-1980';
select empno,ename,hiredate from emp where hiredate='17-12-1980'
ORA-01843: 无效的月份
SQL> select empno,ename,hiredate from emp where hiredate='17-12月-1980';
EMPNO ENAME      HIREDATE
----- ---------- -----------
 7369 SMITH      1980/12/17

 假如你不想使用上述时间格式进行时间筛选,可以使用如下代码:改变当前会话窗口的默认时间显示格式。


SQL> alter session set nls_date_format="YYYY-MM-DD HH:MI:SS";
Session altered


 接着,我们在利用上述例子,进行时间筛选,效果如下。


SQL> select empno,ename,hiredate from emp where hiredate='17-12月-1980';
select empno,ename,hiredate from emp where hiredate='17-12月-1980'
ORA-01861: 文字与格式字符串不匹配
SQL> select empno,ename,hiredate from emp where hiredate='1980-12-17';
EMPNO ENAME      HIREDATE
----- ---------- -----------
 7369 SMITH      1980/12/17


注意:上述代码执行后,仅对当前会话窗口有效,也就是说,当关闭了该窗口后,时间显示格式又会恢复默认状态。


2)日期函数运算

image.png


日期类型的数据,仅仅支持“+”或者“-”算术运算符。

日期类型的数据,使用“+”算术运算符只能是加减某个数值(该数值会被按照天数来计算),而不能是某个日期。也就是说:日期+日期没有什么意义。

日期类型的数据,使用“-”算术运算符,既可以加减某个数值(该数值会被按照天数来计算),又可以进行日期相减,“日期-日期=天数”。

SQL> select empno,ename,hiredate,(hiredate+90) from emp where hiredate='1980-12-17';
EMPNO ENAME      HIREDATE    (HIREDATE+90)
----- ---------- ----------- -------------
 7369 SMITH      1980/12/17  1981/3/17
SQL> select empno,ename,hiredate,(hiredate+to_date('1980-12-15')) from emp where hiredate='1980-12-17';
select empno,ename,hiredate,(hiredate+to_date('1980-12-15')) from emp where hiredate='1980-12-17'
ORA-00975: 不允许日期 + 日期    -- 可以看出这里报错了:不允许日期 + 日期
SQL> select empno,ename,hiredate,(hiredate-90) from emp where hiredate='1980-12-17';
EMPNO ENAME      HIREDATE    (HIREDATE-90)
----- ---------- ----------- -------------
 7369 SMITH      1980/12/17  1980/9/18
SQL> select empno,ename,hiredate,(hiredate-to_date('1980-12-15')) from emp where hiredate='1980-12-17';
EMPNO ENAME      HIREDATE    (HIREDATE-TO_DATE('1980-12-15'
----- ---------- ----------- ------------------------------
 7369 SMITH      1980/12/17

 

3)常用的日期函数

image.png

相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
14天前
|
SQL Oracle 关系型数据库
[Oracle]面试官:你举例几个内置函数,并且说说如何使用内置函数作正则匹配
本文介绍了多种SQL内置函数,包括单行函数、非空判断函数、日期函数和正则表达式相关函数。每种函数都有详细的参数说明和使用示例,帮助读者更好地理解和应用这些函数。文章强调了字符串操作、数值处理、日期计算和正则表达式的使用方法,并提供了丰富的示例代码。作者建议读者通过自测来巩固学习成果。
13 1
[Oracle]面试官:你举例几个内置函数,并且说说如何使用内置函数作正则匹配
|
4月前
|
SQL Oracle 算法
|
30天前
|
Oracle 关系型数据库 网络安全
Oracle 19c 安装教程学习
Oracle 19c 安装教程学习
54 2
|
2月前
|
存储 Oracle 关系型数据库
Oracle和MySQL有哪些区别?从基本特性、技术选型、字段类型、事务、语句等角度详细对比Oracle和MySQL
从基本特性、技术选型、字段类型、事务提交方式、SQL语句、分页方法等方面对比Oracle和MySQL的区别。
493 18
Oracle和MySQL有哪些区别?从基本特性、技术选型、字段类型、事务、语句等角度详细对比Oracle和MySQL
|
2月前
|
Oracle NoSQL 关系型数据库
主流数据库对比:MySQL、PostgreSQL、Oracle和Redis的优缺点分析
主流数据库对比:MySQL、PostgreSQL、Oracle和Redis的优缺点分析
378 2
|
1月前
|
Oracle 关系型数据库 MySQL
shell获取多个oracle库mysql库所有的表
请注意,此脚本假设你有足够的权限访问所有提到的数据库。在实际部署前,请确保对脚本中的数据库凭据、主机名和端口进行适当的修改和验证。此外,处理数据库操作时,务必谨慎操作,避免因错误的脚本执行造成数据损坏或服务中断。
40 0
|
3月前
|
Oracle 关系型数据库 MySQL
Mysql和Oracle数据库死锁查看以及解决
【8月更文挑战第11天】本文介绍了解决MySQL与Oracle数据库死锁的方法。MySQL可通过`SHOW ENGINE INNODB STATUS`查看死锁详情,并自动回滚一个事务解除死锁;也可手动KILL事务。Oracle则通过查询V$LOCK与V$SESSION视图定位死锁,并用`ALTER SYSTEM KILL SESSION`命令终止相关会话。预防措施包括遵循ACID原则、优化索引及拆分大型事务。
126 3
|
4月前
|
SQL Oracle 关系型数据库
|
4月前
|
SQL Oracle 关系型数据库
Oracle|内置函数之INSTR
【7月更文挑战第5天】
|
4月前
|
Oracle 关系型数据库 数据挖掘

推荐镜像

更多