各位老铁们好,相信很多人对oracle时间格式都不是特别的了解,因此呢,今天就来为大家分享下关于oracle时间格式以及Oracle时间类型判断的问题知识,还望可以帮助大家,解决大家的一些困惑,下面一起来看看吧!
本文目录
一、oracle数据表中如何转化成24小时格式
一、在使用Oracle的to_date函数来做日期转换时,很多J *** a程序员也许会直接的采用“yyyy-MM-dd HH:mm:ss”的格式作为格式进行转换,但是在Oracle中会引起错误:“ORA 01810格式代码出现两次”。
select to_date('2005-01-01 13:14:20','yyyy-MM-dd HH24:mm:ss') from dual;
原因是SQL中不区分大小写,MM和mm被认为是相同的格式代码,所以Oracle的SQL采用了mi代替分钟。
select to_date('2005-01-01 13:14:20','yyyy-MM-dd HH24:mi:ss') from dual;
二、另要以24小时的形式显示出来要用HH24
select to_char(sysdate,'yyyy-MM-dd HH24:mi:ss') from dual;//mi是分钟
select to_char(sysdate,'yyyy-MM-dd HH24:mm:ss') from dual;//mm会显示月份 oracle中的to_date参数含义
DAY天的名字,使用空格填充到9个字符
YYY,YY,Y年份的最后三位,两位,一位
WW年中的第几个星期 1.日期时间间隔 *** 作
select sysdate,sysdate- interval’7’ MINUTE from dual
select sysdate- interval’7’ ho *** from dual
select sysdate- interval’7’ day from dual
select sysdate,sysdate- interval’7’ month from dual
select sysdate,sysdate- interval’7’ year from dual
select sysdate,sysdate- 8*interval’2’ ho *** from dual
select sysdate,to_char(sysdate,’yyyy-mm-dd hh24:mi:ss’) from dual select sysdate,to_char(sysdate,’yyyy-mm-dd hh:mi:ss’) from dual select sysdate,to_char(sysdate,’yyyy-ddd hh:mi:ss’) from dual select sysdate,to_char(sysdate,’yyyy-mm iw-d hh:mi:ss’) from dual
参考oracle的相关关文档(ORACLE901DOC/SERVER.901/A90125/SQL_ELEMENTS4.HTM#48515)
select to_date(’2003-10-17 21:15:37’,’yyyy-mm-dd hh24:mi:ss’) from dual
具体用法和上面的to_char差不多。
select trunc(sysdate,’YEAR’) from dual select trunc(sysdate) from dual select to_char(trunc(sysdate,’YYYY’),’YYYY’) from dual
--返回当前时间年月日小时分秒毫秒
select to_char(c *** rent_timestamp(5),’DD-MON-YYYY HH24:MI:SSxFF’) from dual;
--返回当前时间的秒毫秒,可以指定秒后面的精度(更大=9)
select to_char(c *** rent_timestamp(9),’MI:SSxFF’) from dual;
l_dummy all_objects.object_name%type;
l_start number default dbms_utility.get_time;
’select object_name from all_objects’||
dbms_output.put_line(round((dbms_utility.get_time-l_start)/100, 2)||’ seconds...’);
二、ORACLE 中怎么格式化如下日期
所谓格式化日期指的是将日期转为字符串,或将字符串转为日期,下面几个函数可以用来格式化日期。
TO_CHAR(datetime,'for *** t')
TO_DATE(character,'for *** t')
TO_TIMES *** P(character,'for *** t')
TO_TIMES *** P_TZ(character,'for *** t')
先来看看通过下面的 SQL产生的结果吧,注意,由于语言环境的不同,下面的显示结果可能不同。
SELECT TO_CHAR(c *** rent_timestamp,'for *** t') FROM DUAL;
YYYY-MM-DD HH24:MI:SS FF3 2015-06-15 13:18:10 700
YYYY-MM-DD HH24:MI:SS FF3 TZR 2015-06-15 13:18:10 700+08:00
那么 Oracle支持哪些格式呢?看看下面的表格吧
YEAR年拼写,如:TWENTY FIFTEEN
SYEAR年拼写,如:TWENTY FIFTEEN
IY *** O年的最后两位数字,如:15
IYY *** O年的最后三位数字,如:015
DL日期全称,如:Friday, June 12, 2015
IW *** O Week of year(1-52 or 1-53)
J The number of days since January 1, 4712 BC
默认情况下,Oracle格式化日期时,有一定的容错 *** ,如下面的 SQL返回正确的结果。
select to_date('20150612','YYYY/MM/DD') from dual
select to_date('2015#06#12','YYYY/MM/DD') from dual
如果你想精确匹配,你可以加上 FX修饰符,如:
select to_date('2015/06/12','FXYYYY/MM/DD') from dual
三、Oracle基本数据类型存储格式浅析—日期类型(3)
1、对于公元前的日期 Oracle从开始保存公元前的年的保存的值和对应的公元后的年的值相加的和是如上例中的公元年和公元前年的值相加+=+=
2、 SQL中DATE类型最后还包括一个似乎目前没有使用
3、 SQL> CREATE TABLE TEST_TIMES *** P(TIME TIMES *** P() TIME TIMES *** P() WITH LOCAL TIME ZONE TIME TIMES *** P() WITH TIME ZONE);
4、 SQL> INSERT INTO TEST_TIMES *** P VALUES(SYSTIMES *** P SYSTIMES *** P SYSTIMES *** P);
5、 SQL> SELECT* FROM TEST_TIMES *** P;
6、 TIME TIME TIME月下午月下午月下午+:
7、 SQL> SELECT DUMP(TIME) DUMP(TIME) DUMP(TIME) FROM TEST_TIMES *** P;
8、 DUMP(TIME) DUMP(TIME) DUMP(TIME) Typ= Len=: b b fc c Typ= Len=: b b fc c Typ= Len=: b b fc c c c
9、可以发现如果客户端和数据库中的时区是一致的那么TIMES *** P和TIMES *** P WITH LOCAL TIME ZONE存储的数据是完全一样的
10、 TIMES *** P WITH TIME ZONE则略有不同它保存的是时区的时间和所处的时区信息
11、修改客户端主机的时区由东区(+区)改为时区
12、 SQL> INSERT INTO TEST_TIMES *** P VALUES(SYSTIMES *** P SYSTIMES *** P SYSTIMES *** P);
13、修改客户端主机的时区改为西区(时区)
14、 SQL> INSERT INTO TEST_TIMES *** P VALUES(SYSTIMES *** P SYSTIMES *** P SYSTIMES *** P);
15、修改客户端主机的时区改为西区(时区)
16、 SQL> INSERT INTO TEST_TIMES *** P VALUES(SYSTIMES *** P SYSTIMES *** P SYSTIMES *** P);
17、修改客户端主机的时区改为东区(+时区)
18、 SQL> INSERT INTO TEST_TIMES *** P VALUES(SYSTIMES *** P SYSTIMES *** P SYSTIMES *** P);
19、修改客户端主机的时区改为西区(时区)
20、 SQL> INSERT INTO TEST_TIMES *** P VALUES(SYSTIMES *** P SYSTIMES *** P SYSTIMES *** P);
21、修改客户端主机的时区改为东区(+时区)
22、 SQL> INSERT INTO TEST_TIMES *** P VALUES(SYSTIMES *** P SYSTIMES *** P SYSTIMES *** P);
23、修改客户端主机的时区改回东区(+时区)
24、 SQL> SELECT* FROM TEST_TIMES *** P;
25、 TIME TIME TIME月下午月下午月下午+:
26、 SQL> SELECT DUMP(TIME) DUMP(TIME) DUMP(TIME) FROM TEST_TIMES *** P;
27、 DUMP(TIME) DUMP(TIME) DUMP(TIME) Typ= Len=: b b fc c Typ= Len=: b b fc c Typ= Len=: b b fc c c c
28、 Typ= Len=: b c c c e Typ= Len=: b c c c e Typ= Len=: b c c c e c
29、 Typ= Len=: b b f a d c c Typ= Len=: b f a d c c Typ= Len=: b f a d c c f c
30、 Typ= Len=: b b a f Typ= Len=: b b a f Typ= Len=: b b a f c
31、 Typ= Len=: c f d Typ= Len=: b f d Typ= Len=: b f d c
32、 Typ= Len=: b f cb bb c Typ= Len=: c e cb bb c Typ= Len=: b e cb bb c e
33、 Typ= Len=: c b b Typ= Len=: c f b b Typ= Len=: b f b b d a
34、 SQL> SELECT TO_NUMBER( C XXX) TO_NUMBER( C XXX) FROM DUAL;
35、 TO_NUMBER( C XXX) TO_NUMBER( C XXX)
36、 SQL> SELECT TO_NUMBER( XXX) TO_NUMBER( C XXX) TO_NUMBER( C XXXXXXX) FROM DUAL;
37、 TO_NUMBER( XXX) TO_NUMBER( C XXX)
38、 SQL> SELECT TO_NUMBER( C XXX) TO_NUMBER( E XXX) TO_NUMBER( A XXX) FROM DUAL;
39、 TO_NUMBER( C XXX) TO_NUMBER( E XXX) TO_NUMBER( A XXX)
40、可以看出修改时区会导致 *** TIMES *** P时间发生变化但是对于TIMES *** P WITH LOCAL TIME ZONE类型总是将 *** 的时间转化到数据库服务器上时区的时间进行存储
41、 TIMES *** P WITH TIME ZONE保存的是当前时间转化到时区的对应的时间并通过最后两位来保存时区信息
42、之一位表示时区的小时部分时区用 x表示东n区在这个基础上加n西n区在这个基础上减n我们所处的东区表示为 x C西区表示为 xF
好了,关于oracle时间格式和Oracle时间类型判断的问题到这里结束啦,希望可以解决您的问题哈!