首页 > 数据库 >orcla的timestamp与date如何判断是否相等 oracle的date和timestamp区别

orcla的timestamp与date如何判断是否相等 oracle的date和timestamp区别

时间:2024-09-04 16:47:45浏览次数:8  
标签:SYSDATE sysdate orcla timestamp Oracle 类型 date

orcla的timestamp与date如何判断是否相等 oracle的date和timestamp区别

转载

mob6454cc6d3e232024-04-25 13:03:57

文章标签 sql 数据 字符串 获取时间 文章分类 架构 后端开发 阅读数777

 

Oracle中的时间类型

1、Oracle中的时间类型只有date和TIMESTAMP,TIMESTAMP是比date更精确的类型
    ⑴DATE类型:ORACLE最常用的日期类型,它可以保存日期和时间,常用日期处理都可以采用这种类型
    ⑵TIMESTAMP类型:ORACLE常用的日期类型,它与date的区别是TIMESTAMP类型不仅可以保存日期和时间,还能保存小数秒,小数位数可以指定为0-9,默认为6位

2、日期时间函数用于处理时间类型的数据,Oracle中提供了很多和日期相关的函数。并且包括了日期的加减,在日期的加减是有一些规律
    ⑴日期 - 数字 = 日期
    ⑵日期 + 数字 = 日期(天)
    ⑶日期 - 日期 = 数字(天)
    ⑷在Oracle中,date类型可以直接进行加减天数,而加减月份要用add_months函数
    ⑸TIMESTAMP日期类型如果与数值进行加减运算会自动转换为DATE型,也就是说小数秒会自动去除
    
3、在Oracle中准确来说一个礼拜是从星期日开始到星期六结束的,其中时间差以天数为单位

 

Oracle中的date类型

date类型:表示年月日时分秒
    ⑴其展示格式既可以为:YYYY/MM/DD,也可以为YYYY/MM/DD HH24:MI:SS
    ⑵其存储格式只有一种:YYYY/MM/DD HH24:MI:SS
    ⑶即,date类型的值在数据库图形界面中可以有不同的显示格式(具体的显示格式由工具设置决定),但其实际储存的格式只有一种
    ⑷当你只存年月日时,date实际存储的是:年月日0时0分0秒,在plsql中,其展示格式为:YYYY/MM/DD

例1:

 

orcla的timestamp与date如何判断是否相等 oracle的date和timestamp区别_sql

 

 

orcla的timestamp与date如何判断是否相等 oracle的date和timestamp区别_数据_02

 

 

Oracle中的timestamp类型

1、date和timestamp都是对日期和时间的表示,只是两种类型的精确度不同,前者精确到秒,后者精确到小数秒

2、timestamp简称时间戳。时间戳可以存储世纪、4位年、月、日、时(以24小时格式)、分、秒。与DATE类型相比,时间戳具有以下优点:
    ⑴时间戳可以存储秒的小数位
    ⑵时间戳可以存储时区

3、TIMESTAMP数据类型,它包括了所有DATE数据类型的年月日时分秒的信息,而且包括了小数秒的信息。如果想把DATE类型转换成TIMESTAMP类型,就使用CAST函数

 

 

Oracle中的日期格式

格式

描述

YYYY

四位表示的年份 

YYY,YY,Y 

年份的最后三位、两位或一位,缺省为当前世纪 

MM

01~12的月份编号 

MONTH

九个字符表示的月份,右边用空格填补 

MON 

三位字符的月份缩写 

WW

一年中的星期 

D

星期中的第几天 

DD

月份中的第几天 

DDD 

年所中的第几天 

DAY 

九个字符表示的天的全称,右边用空格补齐 

HH,HH12

一天中的第几个小时,12进制表示法 

HH24

一天中的第几个小时,取值为00~23 

MI

一小时中的分钟 

SS

一分钟中的秒 

SSSS 

从午夜开始过去的秒数

 
 

 

Oracle时间函数

sysdate

作用:sysdate函数用于返回当前系统的时间(返回date数据类型)

例2:查询

orcla的timestamp与date如何判断是否相等 oracle的date和timestamp区别_数据_03

 

orcla的timestamp与date如何判断是否相等 oracle的date和timestamp区别_获取时间_04

 

例2_1:插入

sql:insert into USER_INFO (ID,NAME,COUNTRY,DATE_TIME,TIMESTAMP) values(3,'王五','China',sysdate,sysdate)
 

orcla的timestamp与date如何判断是否相等 oracle的date和timestamp区别_获取时间_05

 

 

 

systimestamp

作用:在Oracle中,systimestamp函数返回本机数据库上当前系统日期和时间(包括微秒和时区)

例3:查询

orcla的timestamp与date如何判断是否相等 oracle的date和timestamp区别_sql_06

 

例3_1:插入

insert into USER_INFO (ID,NAME,COUNTRY,DATE_TIME,TIMESTAMP) values(4,'李六','China',systimestamp,systimestamp)
 

orcla的timestamp与date如何判断是否相等 oracle的date和timestamp区别_获取时间_07

 

注:可以看出
sysdate函数最好用于date类型的数据,systimestamp最好用于timestamp类型的数据。当然两种可以混用,只是说有点小差别

 

 

to_date()

作用:将字符类型按一定格式转化为日期类型

例4:查询数据

orcla的timestamp与date如何判断是否相等 oracle的date和timestamp区别_sql_08

 

例4_1:插入数据

INSERT INTO USER_INFO (ID,NAME,CREATE_TIME,UPDATE_TIME) VALUES (9,'小m',to_date('2020-07-29 18:00:00','yyyy-mm-dd hh24:mi:ss'),to_date('2020-07-29 18:00:00','yyyy-mm-dd hh24:mi:ss'))

 

 

orcla的timestamp与date如何判断是否相等 oracle的date和timestamp区别_sql_09

 

注:
1、to_date()只能格式化不带毫秒级别的时间型字符串
    ⑴to_date()的作用是将字符串时间转化为日期类型,日期类型就有年月日时分秒

2、如果字段是一个timetsmp类型的,那么就会默认毫秒级别为0

3、Oracle根据时间来查询数据跟Mysql是有很大区别的
    ⑴在Mysql中可以直接根据时间字符串来进行查询:SELECT * FROM roleinfo WHERE logintime = "2019-01-25";
    ⑵在Oracle中根据时间来查询时,就必须先把时间字符串转为date类型

4、小时格式化:不带24时,默认为12小时制,24小时格式转换时需要指明

例4_2:

orcla的timestamp与date如何判断是否相等 oracle的date和timestamp区别_字符串_10

 

to_timestamp()

作用:将字符类型按一定格式转化为日期时间戳类型(timestamp类型)

例4_3:查询数据

orcla的timestamp与date如何判断是否相等 oracle的date和timestamp区别_获取时间_11

 

orcla的timestamp与date如何判断是否相等 oracle的date和timestamp区别_获取时间_12

 

例4_4:

insert into user_info (ID,
NAME,
COUNTRY,
DATE_TIME,
TIMESTAMP,
DEPT_ID,
EMPLOYEE_NO,
LEADER_NO) values (6,'LL','yy',to_timestamp('2020-07-30 20:30:30.123400','yyyy-mm-dd hh24:mi:ss.ff'),to_timestamp('2020-07-30 20:30:30.123','yyyy-mm-dd hh24:mi:ss.ff3'),1,1,1)
 

orcla的timestamp与date如何判断是否相等 oracle的date和timestamp区别_sql_13

 

to_char()

1、作用:将日期转按一定格式换成字符类型

2、在格式化timestamp类型的时间值时,可以根据需要来格式化毫秒
    ⑴ff:6位毫秒值
    ⑵ff3:3位毫秒值
    ⑶也可以不带毫秒值
    
3、如果是在格式化一个date类型的时间值时,那么用于格式字符串就不能加毫秒参数了,date类型中没有毫秒

4、date类型只能精确到秒,要想精确到毫秒,需要使用timestamp类型

例5:查询数据

select to_char(CREATE_TIME,'yyyy-mm-dd hh24:mi:ss'),to_char(UPDATE_TIME,'yyyy-mm-dd hh24:mi:ss.ff') from USER_INFO where CREATE_TIME > to_date('2020-07-29 19:00:00','yyyy-mm-dd hh24:mi:ss');
 

orcla的timestamp与date如何判断是否相等 oracle的date和timestamp区别_字符串_14

 

例5_1:不带毫秒

orcla的timestamp与date如何判断是否相等 oracle的date和timestamp区别_获取时间_15

 

 

例5_2:带3位毫秒

orcla的timestamp与date如何判断是否相等 oracle的date和timestamp区别_获取时间_16

 

例5_3:其他

select to_char(sysdate,'yyyy') as nowYear   from dual;   --获取时间的年  
select to_char(sysdate,'mm')    as nowMonth from dual;   --获取时间的月  
select to_char(sysdate,'dd')    as nowDay    from dual;   --获取时间的日  
select to_char(sysdate,'hh24') as nowHour   from dual;   --获取时间的时  
select to_char(sysdate,'mi')    as nowMinute from dual;   --获取时间的分  
select to_char(sysdate,'ss')    as nowSecond from dual;   --获取时间的秒
 

例5_4:查询数据

orcla的timestamp与date如何判断是否相等 oracle的date和timestamp区别_sql_17

 

orcla的timestamp与date如何判断是否相等 oracle的date和timestamp区别_获取时间_18

 

orcla的timestamp与date如何判断是否相等 oracle的date和timestamp区别_字符串_19

 

注:
虽然sysdate、systimestamp、to_date()、to_timestamp()都可以用于生成一个date类型或timestamp类型,但是会有默认的一些差距。因此还是不要混用的好,字段本身是什么类型就使用对应类型的函数来创建一个时间值
    ⑴生成一个date类型:使用sysdate或to_date()
    ⑵生成一个timestamp类型:使用systimestamp或to_timestamp()
    ⑶将一个date类型或timestamp类型的时间值转为字符串型:使用to_char(),只是说在指定格式化格式时需要区分好

 

 

Oracle日期加减

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

 

直接加减数字

1、针对天的加减主要是在sysdate上直接进行日,时,分,秒的加减

2、Oracle中使用sysdate函数来获取当前系统时间

方法

描述

SYSDATE 

当前时间

SYSDATE+1

加一天

SYSDATE+(1/24) 

加一小时

SYSDATE+(1/24/60)

加一分钟

SYSDATE+(1/24/60/60)

加一秒钟

SYSDATE-1

减一天

例6:查询数据

orcla的timestamp与date如何判断是否相等 oracle的date和timestamp区别_字符串_20

 

例6_1:插入数据

orcla的timestamp与date如何判断是否相等 oracle的date和timestamp区别_字符串_20

 

orcla的timestamp与date如何判断是否相等 oracle的date和timestamp区别_字符串_21

 

通过ADD_MONTHS()函数

方法

描述

ADD_MONTHS(SYSDATE, 1)

加一月

ADD_MONTHS(SYSDATE, -1)

减一月

ADD_MONTHS(SYSDATE, 1*12)

加一年

ADD_MONTHS(SYSDATE, -1*12)

减一年

 

使用INTERVAL函数

方法    

描述

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

加一秒

                                        

trunc()函数

说明:Oracle中的trunc()函数是对时间类型或者数字进行截取操作的

语法:TRUNC(number,num_digits)

参数:
    ⑴Number:需要截尾取整的数字或时间
    ⑵Num_digits:用于指定取整精度的数字。Num_digits的默认值 0

注:
1、TRUNC()函数截取时不进行四舍五入

2、to_char函数支持date和timestamp,但是trunc却不支持TIMESTAMP数据类型

 

处理日期

TRUNC()函数对于日期的处理方式为:截取的部分保留其值,不截取的部分保存为0

方法 

 描述

trunc(sysdate,'dd')

返回当前年月日(精确到天)

trunc(sysdate,'hh') 

返回当前时间的年月日时部分(精确到小时)

trunc(sysdate,'mi')  

返回当前时间的年月日时分部分(精确到分钟,没有精确到秒的)

trunc(sysdate,'mm')

返回当月第一天

trunc(sysdate,'yy') 

返回当年第一天

trunc(sysdate,'yyyy') 

返回当年第一天

trunc(sysdate,'d')

返回当前星期的第一天(星期天)

例7:dd

INSERT INTO USER_INFO(ID,NAME,CREATE_TIME,UPDATE_TIME) VALUES(5,'小红',trunc(sysdate,'dd'),trunc(sysdate,'dd'));

--精确到天,则时间秒值都为0

 

 

例7_1:

INSERT INTO USER_INFO(ID,NAME,CREATE_TIME,UPDATE_TIME) VALUES(6,'小明',trunc(sysdate,'hh'),trunc(sysdate,'hh'));

--精确到小时,则分秒值为0

 

orcla的timestamp与date如何判断是否相等 oracle的date和timestamp区别_sql_24

 

例7_2:sysdate还可以进行时间的加减

--在截取时间后,进行时间的加减
INSERT INTO USER_INFO(ID,NAME,CREATE_TIME,UPDATE_TIME) VALUES(7,'小张',(trunc(sysdate,'hh')+2/24),(trunc(sysdate,'hh')+30/24/60));

 

orcla的timestamp与date如何判断是否相等 oracle的date和timestamp区别_数据_25

 

处理数值

1、TRUNC(n1, n2): 用来根据n2截取n1并返回结果,n2可省略。截取数值是不进行四舍五入

2、n2参数可以为正数也可以为负数

    ⑴负数表示从小数点左边第一位截取后面全置为零

    ⑵正数表示小数点后面保留一位

    ⑶截取整数部分:可以不传n2参数也可以传N2=0

    

例8:

orcla的timestamp与date如何判断是否相等 oracle的date和timestamp区别_获取时间_26

 

例8_1:

orcla的timestamp与date如何判断是否相等 oracle的date和timestamp区别_字符串_27

 

拓展

timestamp关键字

Oracle中还可以使用timestamp关键字来将将一个时间字符串值转为date类型

例9:

insert into USER_INFO (ID,NAME,COUNTRY,DATE_TIME,TIMESTAMP) values(4,'李六','China',timestamp '2020-07-30 20:30:30',timestamp '2020-07-30 20:30:30.55555')

 

 

orcla的timestamp与date如何判断是否相等 oracle的date和timestamp区别_sql_28

 

 

查询数据库系统时间

 

SELECT SYSDATE FROM DUAL

select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') from dual

--oracle中不能省略from关键字,dual这个表是oracle自带的表,因此可以直接使用

 

 

  本文章为转载内容,我们尊重原作者对文章享有的著作权。如有内容错误或侵权问题,欢迎原作者联系我们进行内容更正或删除文章。

上一篇:cypress 测试 cypress测试框架说法错误的是

下一篇:yandex games游戏入口 yandex maps apk

 

标签:SYSDATE,sysdate,orcla,timestamp,Oracle,类型,date
From: https://www.cnblogs.com/jijm123/p/18396842

相关文章

  • 微信小程序 - 云开发报错 errCode: -1 | errMsg: query.update is only available in
    前言关于此问题网上的教程都无法解决,如果您的报错信息与我相似,即可解决。在微信小程序开发中,云开发使用云函数update操作数据库时出现报错:thirdScriptErrorerrCode:-1|errMsg:query.updateisonlyavailableinserverSDK/API;at“pages/x”pagelifeCycleMe......
  • GreatSQL执行Update失败案例分析
    GreatSQL执行Update失败案例分析一问题概述业务反馈在应用核心库的用户基本信息表执行部分update命令失败,报错如下:updatexxx.xxx_staffbasicinfosetstaffidstatus='04’wherestaffidin(select*fromduyuanyu.tmp_d_xiaoyuan)>1265Datatruncatedforcolumn......
  • 【Oracle点滴积累】Oracle 19c安装Critical Patch Update for January 2024
    广告位招租!知识无价,人有情,无偿分享知识,希望本条信息对你有用!今天和大家分享如何为Oracle19c(未启用RMAN的单实例)安装CriticalPatchUpdate(PatchNumber:35943157),本指引不包含RollBack部分,本文仅供参考,谢谢!cd/home/oracle/NewVersion_Opatch/OPatch/./opatchversio......
  • MySQL中日期和时间戳的转换:字符到DATE和TIMESTAMP的相互转换
    在MySQL中,经常需要在DATE、TIMESTAMP和字符串之间进行相互转换。以下是一些常见的转换方法:1.字符串到日期/时间类型字符串转DATE:使用STR_TO_DATE()函数将字符串转换为DATE类型。你需要提供字符串的格式。SELECTSTR_TO_DATE('2024-08-24','%Y-%m-%d')ASmy_......
  • Windows Server 2019 OVF, updated Aug 2024 (sysin) - VMware 虚拟机模板
    WindowsServer2019OVF,updatedAug2024(sysin)-VMware虚拟机模板2024年8月版本更新,现在自动运行sysprep,支持ESXiHostClient部署请访问原文链接:https://sysin.org/blog/windows-server-2019-ovf/,查看最新版。原创作品,转载请保留出处。现在都是自动sysprep的......
  • JDBC中的execute, executeQuery, 和 executeUpdate方法区别
    JDBC中的execute,executeQuery,和executeUpdate方法区别1、execute(Stringsql)2、executeQuery(Stringsql)3、executeUpdate(Stringsql)......
  • Windows Server 2016 OVF, updated Aug 2024 (sysin) - VMware 虚拟机模板
    WindowsServer2016OVF,updatedAug2024(sysin)-VMware虚拟机模板2024年8月版本更新,现在自动运行sysprep,支持ESXiHostClient部署请访问原文链接:https://sysin.org/blog/windows-server-2016-ovf/,查看最新版。原创作品,转载请保留出处。现在都是自动sysprep的......
  • Windows Server 2016 中文版、英文版下载 (updated Aug 2024)
    WindowsServer2016中文版、英文版下载(updatedAug2024)WindowsServer2016Version1607请访问原文链接:https://sysin.org/blog/windows-server-2016/,查看最新版。原创作品,转载请保留出处。本站将不定期发布官方原版风格月度更新ISO。WindowsServer2016直接上链......
  • Windows Server 2019 中文版、英文版下载 (updated Aug 2024)
    WindowsServer2019中文版、英文版下载(updatedAug2024)WindowsServer2019Version1809请访问原文链接:https://sysin.org/blog/windows-server-2019/,查看最新版。原创作品,转载请保留出处。本站将不定期发布官方原版风格月度更新ISO。WindowsServer2019直接上链......
  • sipp模拟uas发送update
     概述freeswitch是一款简单好用的VOIP开源软交换平台。但是fs在处理update消息时候有BUG,为了复现问题,使用sipp模拟uas,发送update并发送DTMF码。本文档记录sipp的配置方案。环境CentOS7.9freeswitch1.10.7sipp.3.6.2问题描述在与运营商对接的过程中,运营商内部会先返......