一、date

1.date、sysdate格式说明

展示

date类型,展示格式既可以为:YYYY/MM/DD,也可以为YYYY/MM/DD HH24:MI:SS;

其存储格式只有一种:YYYY/MM/DD HH24:MI:SS

展示格式一:

当你只存年月日时,date实际存储的是:年月日0时0分0秒,在plsql中,其展示格式为:YYYY/MM/DD,

将其转换成YYYY/MM/DD HH24:MI:SS时,返回的是YYYY/MM/DD 00:00:00。

展示格式二:

当date实际存储的是年月日时分秒时,在plsql中,其展示格式为:YYYY/MM/DD HH24:MI:SS;

系统时间sysdate,在plsql中,其展示格式为:YYYY/MM/DD HH24:MI:SS。

说明:与插入时的格式无关

证实

TESTDATE表结构

插入sql的日期格式及结果展示

补充:

当插入年月日时分秒且时分秒为:00:00:00,在plsql中是不显示时分秒的。

要想显示出来,需用to_char()

若是还是对推荐有疑问,请看下面的 4.2 查询指定时间段的数据

2.日期转字符串

TO_CHAR(date,format)

方式一:只带一个参数

select to_char(t.schedule_date) from CONSULT_SCHEDULE t

--28-APR-17

方式二:带2个参数

转换格式不区分大小写;

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

分钟格式化:可以使用mi或mm,建议使用MI。

说明:

格式化成yyyy年mm月dd日

--年月日

--需要填充3个空格,不然‘日’显示不出来

SELECT TO_CHAR(SYSDATE,'yyyy"年"MM"月"dd"日" ') 系统日期 FROM DUAL

注意:

年月日需加上双引号;

别名不能加单引号、双引号。

3.字符串转日期

方法一:

TO_DATE('dateStr', format),规则如下:

转换格式不区分大小写;

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

分钟格式化:必须使用mi,不能使用mm,否则会报错;

dateStr的长度<=format的长度,都可以实现类型转换:

方式一:标准格式

年月日

说明:

年月日时分秒

方式二:字符串只到分,会自动添加上:00秒。

方式三:字符串也是只到日

方法二:

DATE'YYYY-MM-DD',并且只能是这一种格式。

另外,TO_DATE(date),该函数也可以只传一个参数,但是这个参数必须是date类型,

表示的含义是:将任何格式的日期类均转换成YYYY/MM/DD的格式。

4.根据日期查询数据

说明:这里着重介绍的是日期字段带有时分秒的

4.1 查询某一天的数据

测试环境:

VIRTUAL_CARD表中共有5条记录;

字段REGTIME的字段类型为date。

情景模拟:查询2018年7月18日的数据记录

格式要求:日期转变成YYYY-MM-DD HH24:MI:SS格式的字符串

方式一:查询条件使用字符串实现

--查询条件按字符串进行

SELECT TO_CHAR(T.REGTIME, 'YYYY-MM-DD HH24:MI:SS') REGTIME

FROM VIRTUAL_CARD T

WHERE TO_CHAR(T.REGTIME, 'yyyy-mm-dd') = '2018-07-18'

方式二:查询条件使用日期实现

方法一:TRUNC()

--查询条件按日期进行1

SELECT TO_CHAR(T.REGTIME, 'YYYY-MM-DD HH24:MI:SS') REGTIME

FROM VIRTUAL_CARD T

WHERE TRUNC(T.REGTIME) = TO_DATE('2018-07-18', 'YYYY-MM-DD')

方法二:TO_DATE()

--查询条件按日期进行2

SELECT TO_CHAR(T.REGTIME, 'YYYY-MM-DD HH24:MI:SS') REGTIME

FROM VIRTUAL_CARD T

WHERE TO_DATE(T.REGTIME) = TO_DATE('2018-07-18', 'YYYY-MM-DD')

方式三:利用TO_DATE()特性

SELECT TO_CHAR(T.REGTIME, 'YYYY-MM-DD HH24:MI:SS') REGTIME

FROM VIRTUAL_CARD T

WHERE T.REGTIME >= TO_DATE('2018-07-18', 'YYYY-MM-DD')

AND T.REGTIME < TO_DATE('2018-07-19', 'YYYY-MM-DD')

方法四:TO_CHAR()-->TO_DATE() 不建议使用

SELECT TO_CHAR(T.REGTIME, 'YYYY-MM-DD HH24:MI:SS') REGTIME

FROM VIRTUAL_CARD T

WHERE TO_DATE(TO_CHAR(T.REGTIME, 'YYYY-MM-DD'), 'YYYY-MM-DD') =

TO_DATE('2018-07-18', 'YYYY-MM-DD')

查询结果展示

updateTime--2018年8月15日10点21分

4.2 查询指定时间段的数据

表数据展示

场景:查询从2018-08-05至2018-08-06的数据

错误实现方式:

--错误实现:between and

SELECT REGTIME

FROM VIRTUAL_CARD

WHERE REGTIME BETWEEN TO_DATE('2018-08-05', 'yyyy-mm-dd') AND

TO_DATE('2018-08-07', 'yyyy-mm-dd')

ORDER BY REGTIME

查询结果:[2018/08/05 00:00:00,2018/08/07 00:00:00]

方式一:

--方式一:[2018/08/05 00:00:00,2018/08/06 23:59:59]

SELECT REGTIME

FROM VIRTUAL_CARD

WHERE REGTIME >= TO_DATE('2018-08-05', 'yyyy-mm-dd') AND

REGTIME < TO_DATE('2018-08-07', 'yyyy-mm-dd')

ORDER BY REGTIME

方式二:推荐使用

--方式二:[2018/08/05 00:00:00,2018/08/07 00:00:00)

SELECT REGTIME

FROM VIRTUAL_CARD

WHERE REGTIME >= TO_DATE('2018-08-05', 'yyyy-mm-dd') AND

REGTIME < TO_DATE('2018-08-06', 'yyyy-mm-dd') + 1 --2018-08-07

ORDER BY REGTIME

方式三:

--方式三

SELECT REGTIME

FROM VIRTUAL_CARD

WHERE REGTIME >= TO_DATE('2018-08-05 00:00:00', 'yyyy-mm-dd hh24:mi:ss') AND

REGTIME <= TO_DATE('2018-08-06 23:59:59', 'yyyy-mm-dd hh24:mi:ss')

ORDER BY REGTIME

5.date类型进行加减运算

二、timestamp

1.格式

--查询系统时间戳

SELECT SYSTIMESTAMP FROM DUAL

三、相互转换

1.日期转时间戳

--系统时间转时间戳

SELECT CAST(SYSDATE AS TIMESTAMP) DATE_TO_TIMESTAMP FROM DUAL

写在最后

哪位大佬如若发现文章存在纰漏之处或需要补充更多内容,欢迎留言!!!

oracle 日期类型是什么,oracle date日期类型 精析相关推荐

  1. JS的日期操作:String转date日期格式、求日期差

    一.在js中String类型转成date格式 var date = new Date("2021-11-14 14:58:43"); 二.date转String类型 var dat ...

  2. Oracle date日期类型使用

    Oracle中将日期转换为字符串,需要设置日期格式, to_char(sysdate, fmt) fmt:YYYY-MM-DD HH24:MI:SS 结果:2021-03-04 19:42:50 fm ...

  3. oracle数据库日期格式的运算,Oracle时间类型date,timestamp时间差计算

    Oracle的时间类型有两种date和timestamp.   date精确到秒,timestamp精确到毫秒. 1.计算date类型的时间差 可以先把年,月,日,小时,分,秒用to_char函数拆分 ...

  4. oracle日期函数大全一(Date)

    Date: ORACLE日期时间函数大全 TO_DATE格式(以时间:2007-11-02   13:45:25为例)            Year:              yy two dig ...

  5. oracle to_char 和 to_date的区别,斜杠和横杠日期转换,mybatis中入参日期,数据库字段是date的写法

    文章目录 斜线日期转换为横线 这样的时间字符串如何转换20201212040506258 ORA-01830: 日期格式图片在转换整个输入字符串之前结束 mybatis中入参日期,数据库字段是date ...

  6. oracle时间类型转化成java对象_Oracle数据库date类型与Java中Date的联系与转化

    以下是对Java中的日期对象与Oracle中的日期之间的区别与联系做点说明,以期对大家有所帮助. new Date():分配 Date 对象并初始化此对象,以表示分配它的时间(精确到毫秒),就是系统当 ...

  7. oracle 天转换成月函数_oracle 日期转换格式 函数

    1 oracle对时间格式的数据存贮 oracle数据库中存放时间格式的数据,是以oracle特定的格式存贮的,占7个字节,与查询时显示的时间格式无关,具体哪个字节表示什么,我不太清楚,请高手补充.存 ...

  8. 【转】Oracle 中的 TO_DATE 和 TO_CHAR 函数 日期处理

    Oracle 中的 TO_DATE 和 TO_CHAR 函数 oracle 中 TO_DATE 函数的时间格式,以 2008-09-10 23:45:56 为例 格式 说明 显示值 备注 Year(年 ...

  9. Oracle 中的 TO_DATE 和 TO_CHAR 函数 日期处理

    Oracle 中的 TO_DATE 和 TO_CHAR 函数 日期处理 Oracle 中的 TO_DATE 和 TO_CHAR 函数 oracle 中 TO_DATE 函数的时间格式,以 2008-0 ...

  10. oracle连续月份列表,Oracle实现查询2个日期所跨过的月份列表/日期列表的方法分析...

    Oracle实现查询2个日期所跨过的月份列表/日期列表的方法分析 本文实例讲述了Oracle实现查询2个日期所跨过的月份列表/日期列表的方法.分享给大家供大家参考,具体如下: 1.基本逻辑公式: Se ...

最新文章

  1. 通俗解释指数加权平均
  2. Redis 笔记系列(十一)——Redis的发布和订阅机制
  3. oracle中表空间的相关操作
  4. 网络干货,无论是运维还是开发都要知道的网络知识系列之(五)
  5. 工作110:表格重置
  6. java中singleton_Singleton是什么,在Java中如何实现
  7. JVM Specification 9th Edition (1) Cover
  8. hadoop mapreduce lzo
  9. 初学者|一起来看看词性标注
  10. REST服务中的异常处理
  11. 深度强化学习(深度Q学习
  12. 安卓10不支持qmc解码_你永远都不知道手机中计算器的秘密!安卓IOS都支持!
  13. 基于Tasking的连接器文件配置技巧
  14. 电工与电子技术实验——单管交流电压放大电路
  15. Microsemi Libero系列教程(一)——Libero开发环境介绍、下载、安装与注册
  16. 高通 Camx debug log控制
  17. 2021-05-24 昨日三省吾身
  18. Android开发在路上:少去踩坑,多走捷径(上)
  19. 新邮政法规定:邮政企业对平常邮件损失不赔偿
  20. UPDATE statement on table xxx‘ expected to update 1 row(s); 0 were matched

热门文章

  1. 2018总结,2019展望
  2. intellij idea svn不能更新和提交
  3. 网站 图标 背景 素材 网址 js效果网址 导航效果网址 网址大全 素材集
  4. mybatis查询记录条数
  5. 面对流氓软件,是逃避还是反击?(连载三、未来的流氓软件)
  6. 【论文阅读|cryoET】Isotropic reconstruction for electrontomography with deep learning (解决缺失楔问题降噪)
  7. JAVA MemCache 史无前例的详细讲解【转】
  8. web前端HTML_1(简单页面的实现)
  9. zzulioj1017C语言答案,郑州轻工业大学oj题解(c语言)1017,1018 if典型题
  10. Android 监听键盘事件