Oracle数据库中如何将字符串格式化为日期

Oracle数据库中如何将字符串格式化为日期,第1张

可以用

to_date('日期类型字符串','要转化的日期类型')函数进行日期格式转换

sql:select

to_date('1990-12-12

12:12:32','yyyy-MM-dd

hh24:mi:ss')

from

dual;

解释:此语句的输出结果就是

“1990-12-12

12:12:32”(日期类型)。后面的日期类型格式可以根据实际需要修改

如改为:select

to_date('1990-12-12

12:12:32','yyyy-MM-dd

)

from

dual;输出结果就是“1990-12-12”

oracle数据类型看起来非常简单,但用起来会发现有许多知识点,本文是我对ORACLE日期数据类型的一些整理,都是开发入门资料,与大家分享:\x0d\注:由于INTERVAL及TIME ZONE实际用得比较少,所以本文内容未涉及这两个方面。\x0d\\x0d\1、常用日期型数据类型\x0d\11、DATE\x0d\这是ORACLE最常用的日期类型,它可以保存日期和时间,常用日期处理都可以采用这种类型。DATE表示的日期范围可以是公元前4712年1月1日至公元9999年12月31日\x0d\date类型在数据库中的存储固定为7个字节,格式为:\x0d\ 第1字节:世纪+100\x0d\ 第2字节:年\x0d\ 第3字节:月\x0d\ 第4字节:天\x0d\ 第5字节:小时+1\x0d\ 第6字节:分+1\x0d\ 第7字节:秒+1\x0d\\x0d\12、TIMESTAMP(p)\x0d\这也是ORACLE常用的日期类型,它与date的区别是不仅可以保\x0d\存日期和时间,还能保存小数秒,小数位数可以指定为0-9,默认为6位,所以最高精度可以到ns(纳秒),数据库内部用7或者11个字节存储,如果精度为\x0d\0,则用7字节存储,与date类型功能相同,如果精度大于0则用11字节存储。\x0d\格式为:\x0d\ 第1字节:世纪+100\x0d\ 第2字节:年\x0d\ 第3字节:月\x0d\ 第4字节:天\x0d\ 第5字节:小时+1\x0d\ 第6字节:分+1\x0d\ 第7字节:秒+1\x0d\ 第8-11字节:纳秒,采用4个字节存储,内部运算类型为整形\x0d\\x0d\注:TIMESTAMP日期类型如果与数值进行加减运算会自动转换为DATE型,也就是说小数秒会自动去除。\x0d\\x0d\13、DATE与TIMESTAMP类型内部存储验证\x0d\\x0d\1 create table T\x0d\ 2 (\x0d\ 3 C1 DATE,\x0d\ 4 C2 TIMESTAMP(9)\x0d\ 5 );\x0d\ 6 \x0d\ 7 insert into t(c1,c2) values(date'2010-2-12',timestamp'2010-2-12 13:24:52234123211');\x0d\ 8 insert into t(c1,c2) values(\x0d\ 9 to_date('2010-2-12 10:20:30','YYYY-MM-DD HH24:MI:SS'),\x0d\10 to_timestamp('2010-2-12 13:24:52123456','YYYY-MM-DD HH24:MI:SSFF6')\x0d\11 );\x0d\12 \x0d\13 SQL> select c1,dump(c1) c1_d,c2,dump(c2) c2_d from t;

时间日期字段在数据库底层都是以时间戳的形式存储的,日期比较其实就简单的转换成了时间戳的比较, 也就是数字的比较

时间戳就是 格林威治时间1970年01月01日00时00分00秒到指定日期时间之间的秒数

2012-01-11 00:00:00的时间戳就是1326211200比较时间字段,底层实际比较的就是这个数字的时间戳

select from 表名 where to_date(jssj,'yyyymmddhh24miss')-

to_date(kssj,'yyyymmddhh24miss')>900/24/60/60

解释下:那两个日期要转成日期型来做比较

条件是大于15分钟,正常两个日期减得到的是天

所以要用900秒除24小时,除60分钟,除60秒,将这个15分钟转成天

前提你的数据库是英文的日期,不是的话先执行下面的语句:

alter session set nls_language='american';

select from e where to_date(rq||sj,'dd-mm-yyhh24:mi')<=sysdate-1;

测试结果:

[TEST@ora1] SQL>desc e;

Name Null Type

----------------------------------------- -------- ----------------------------

RQ VARCHAR2(10)

SJ VARCHAR2(10)

[TEST@ora1] SQL>select from e;

RQ SJ

---------- ----------

01-jun-09 20:00

[TEST@ora1] SQL>select from e where to_date(rq||sj,'dd-mm-yyhh24:mi')<=sysdate

-1;

RQ SJ

---------- ----------

01-jun-09 20:00

---

以上,希望对你有所帮助。

以上就是关于Oracle数据库中如何将字符串格式化为日期全部的内容,包括:Oracle数据库中如何将字符串格式化为日期、oracle中日期型数据长度有什么不同、Oracle数据库是怎么比较字符串类型的日期的等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/sjk/9872878.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-02
下一篇 2023-05-02

发表评论

登录后才能评论

评论列表(0条)

保存