搜索
您的当前位置:首页正文

Oracle 把秒转成时分秒格式(hh24:mm:ss);检测字符串是否是数字

2023-11-09 来源:哗拓教育

 1 CREATE OR REPLACE FUNCTION to_time(sec IN NUMBER) RETURN VARCHAR2 IS 2 /*把秒转成时分秒格式 3 auth lzpong 201/09/16 4 */ 5 BEGIN 6 RETURN TRUNC(NVL(sec,0)/3600)||‘:‘||SUBSTR(NUMTODSINTERVAL(NVL(sec,0), ‘second‘),15,5); 7 EXCEPTION WHEN OTHERS THEN RETURN ‘0:00:00‘; 8 END to_time; 9 10 11 CREATE OR REPLACE FUNCTION isnumeric(str IN VARCHAR2) RETURN NUMBER IS12 /*检测字符串是否是数字 null:-1; notnumeric:0; isnumeric:113 */14 v_str FLOAT;15 BEGIN16 IF str IS NULL THEN17 RETURN -1;18 ELSE19 BEGIN20 SELECT TO_NUMBER (str) INTO v_str FROM DUAL;21 EXCEPTION22 WHEN INVALID_NUMBER THEN23 RETURN 0;24 END;25 RETURN 1;26 END IF;27 END isnumeric;

 

Oracle 把秒转成时分秒格式(hh24:mm:ss);检测字符串是否是数字

标签:

小编还为您整理了以下内容,可能对您也有帮助:

oracle数据表中如何转化成24小时格式

一、在使用Oracle的to_date函数来做日期转换时,很多Java程序员也许会直接的采用“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 al;

如:

原因是SQL中不区分大小写,MM和mm被认为是相同的格式代码,所以Oracle的SQL采用了mi代替分钟。

select to_date('2005-01-01 13:14:20','yyyy-MM-dd HH24:mi:ss') from al;

二、另要以24小时的形式显示出来要用HH24

select to_char(sysdate,'yyyy-MM-dd HH24:mi:ss') from al;//mi是分钟

select to_char(sysdate,'yyyy-MM-dd HH24:mm:ss') from al;//mm会显示月份 oracle中的to_date参数含义

1.日期格式参数 含义说明

D 一周中的星期几

DAY 天的名字,使用空格填充到9个字符

DD 月中的第几天

DDD 年中的第几天

DY 天的简写名

IW ISO标准的年中的第几周

IYYY ISO标准的四位年份

YYYY 四位年份

YYY,YY,Y 年份的最后三位,两位,一位

HH 小时,按12小时计

HH24 小时,按24小时计

MI 分

SS 秒

MM 月

Mon 月份的简写

Month 月份的全名

W 该月的第几个星期

WW 年中的第几个星期 1.日期时间间隔操作

当前时间减去7分钟的时间

select sysdate,sysdate - interval ’7’ MINUTE from al

当前时间减去7小时的时间

select sysdate - interval ’7’ hour from al

当前时间减去7天的时间

select sysdate - interval ’7’ day from al

当前时间减去7月的时间

select sysdate,sysdate - interval ’7’ month from al

当前时间减去7年的时间

select sysdate,sysdate - interval ’7’ year from al

时间间隔乘以一个数字

select sysdate,sysdate - 8 *interval ’2’ hour from al

2.日期到字符操作

select sysdate,to_char(sysdate,’yyyy-mm-dd hh24:mi:ss’) from al select sysdate,to_char(sysdate,’yyyy-mm-dd hh:mi:ss’) from al select sysdate,to_char(sysdate,’yyyy-ddd hh:mi:ss’) from al select sysdate,to_char(sysdate,’yyyy-mm iw-d hh:mi:ss’) from al

参考oracle的相关关文档(ORACLE901DOC/SERVER.901/A90125/SQL_ELEMENTS4.HTM#48515)

3. 字符到日期操作

select to_date(’2003-10-17 21:15:37’,’yyyy-mm-dd hh24:mi:ss’) from al

具体用法和上面的to_char差不多。

4. trunk/ ROUND函数的使用

select trunc(sysdate ,’YEAR’) from al select trunc(sysdate ) from al select to_char(trunc(sysdate ,’YYYY’),’YYYY’) from al

5.oracle有毫秒级的数据类型

--返回当前时间 年月日小时分秒毫秒

select to_char(current_timestamp(5),’DD-MON-YYYY HH24:MI:SSxFF’) from al;

--返回当前 时间的秒毫秒,可以指定秒后面的精度(最大=9)

select to_char(current_timestamp(9),’MI:SSxFF’) from al;

6.计算程序运行的时间(ms)

declare

type rc is ref cursor;

l_rc rc;

l_mmy all_objects.object_name%type;

l_start number default dbms_utility.get_time;

begin

for I in 1 .. 1000

loop

open l_rc for

’select object_name from all_objects ’||

’where object_id = ’ || i;

fetch l_rc into l_mmy;

close l_rc;

end loop;

dbms_output.put_line(round( (dbms_utility.get_time-l_start)/100, 2 ) ||’ seconds...’ );

end;

oracle时间函数的问题!把123426秒转化为:34:17:06 这样的格式,即 00(时):00(分):00(秒)格式。求函数。

TO_DATE格式(以时间:2007-11-02 13:45:25为例)

Year:

yy two digits 两位年 显示值:07

yyy three digits 三位年 显示值:007

yyyy four digits 四位年 显示值:2007

Month:

mm number 两位月 显示值:11

mon abbreviated 字符集表示 显示值:11月,若是英文版,显示nov

month spelled out 字符集表示 显示值:11月,若是英文版,显示november

Day:

dd number 当月第几天 显示值:02

ddd number 当年第几天 显示值:02

dy abbreviated 当周第几天简写 显示值:星期五,若是英文版,显示fri

day spelled out 当周第几天全写 显示值:星期五,若是英文版,显示friday

ddspth spelled out, ordinal twelfth

Hour:

hh two digits 12小时进制 显示值:01

hh24 two digits 24小时进制 显示值:13

Minute:

mi two digits 60进制 显示值:45

Second:

ss two digits 60进制 显示值:25

其它

Q digit 季度 显示值:4

WW digit 当年第几周 显示值:44

W digit 当月第几周 显示值:1

24小时格式下时间范围为: 0:00:00 - 23:59:59....

12小时格式下时间范围为: 1:00:00 - 12:59:59 ....

1. 日期和字符转换函数用法(to_date,to_char)

select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') as nowTime from al; //日期转化为字符串

select to_char(sysdate,'yyyy') as nowYear from al; //获取时间的年

select to_char(sysdate,'mm') as nowMonth from al; //获取时间的月

select to_char(sysdate,'dd') as nowDay from al; //获取时间的日

select to_char(sysdate,'hh24') as nowHour from al; //获取时间的时

select to_char(sysdate,'mi') as nowMinute from al; //获取时间的分

select to_char(sysdate,'ss') as nowSecond from al; //获取时间的秒

select to_date('2004-05-07 13:23:44','yyyy-mm-dd hh24:mi:ss') from al//追问谢谢,不过和我的需求不太符合呢。

oracle SQL语句,日期格式转换

TO_DATE格式(以时间:2007-11-02 13:45:25为例)

1、日期和字符转换函数用法(to_date,to_char)

select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') as nowTime from al;   //日期转化为字符串 

select to_char(sysdate,'yyyy')  as nowYear   from al;   //获取时间的年 

select to_char(sysdate,'mm')    as nowMonth  from al;   //获取时间的月 

select to_char(sysdate,'dd')    as nowDay    from al;   //获取时间的日 

select to_char(sysdate,'hh24')  as nowHour   from al;   //获取时间的时 

select to_char(sysdate,'mi')    as nowMinute from al;   //获取时间的分 

select to_char(sysdate,'ss')    as nowSecond from al;   //获取时间的秒

2、字符串和时间互转

select to_date('2004-05-07 13:23:44','yyyy-mm-dd hh24:mi:ss') from al

select to_char( to_date(222,'J'),'Jsp') from al //显示Two Hundred Twenty-Two   

扩展资料

date 转换为字符串:

to_char(日期,”转换格式” ) 即把给定的日期按照“转换格式”转换。

转换的格式:

表示year的:y 表示年的最后一位 yy 表示年的最后2位 yyy 表示年的最后3位 yyyy 用4位数表示年。

表示month的:mm 用2位数字表示月;mon 用简写形式 比如11月或者nov ;month 用全称 比如11月或者november。

表示day的:dd 表示当月第几天;ddd表示当年第几天;dy 当周第几天 简写 比如星期五或者fri;day当周第几天全写。比如星期五或者friday。

表示hour的:hh 2位数表示小时 12进制; hh24 2位数表示小时 24小时。

表示minute的:mi 2位数表示分钟。

表示second的:ss 2位数表示秒60进制。

Oracle时分秒与字符串转换问题

最讨厌你这样的,弄出来把答案分享出来呀?就好像自己很牛*似的藏着掖着。这个也不对那个也不对。这个有啥难的?
to_char( TO_DATE(lpad('92050',6, '0'), 'HH24:MI:SS'), 'HH24:MI:SS')

Oracle时分秒与字符串转换问题

最讨厌你这样的,弄出来把答案分享出来呀?就好像自己很牛*似的藏着掖着。这个也不对那个也不对。这个有啥难的?
to_char( TO_DATE(lpad('92050',6, '0'), 'HH24:MI:SS'), 'HH24:MI:SS')

oracle 查询时怎么把'20-DEC-17 02.30.30.000000000 PM '这种格式的时间转为年月日时分秒的时间格式

SELECT TO_CHAR(TO_TIMESTAMP('

'20-DEC-17 02.30.30.000000000 PM

','DD-MON-YY HH.MM.SS.FF PM'),'YYYY-MM-DD HH24 MI SS') FROM DUAL;

oracle 按天分组,统计访问量,但是我的时间怎么变成有时分秒的格式?我这么写不行吗?

对你所写的分析,评论下这个推荐答案是有问题的,

一天各个时间可能服务不只一次所以COUNT是不对的,用sum()没有问题。

但他的写法有问题,这个是正确的。

select sum(fwsl), to_char(fwsj, 'yyyy-mm-dd')

from wz_tj

group by to_char(fwsj, 'yyyy-mm-dd');

这个是按天分组,服务记录数的汇总。追问我需要查出来一个date型的数据插入到别的表(推荐答案不是我选的,怎么就推荐上去了。)

追答insert into table

select sum(fwsl), to_date(to_char(fwsj, 'yyyy-mm-dd'),'yyyy-mm-dd')

from kc03

where aab001 = '13020810213'

group by to_char(aae037, 'yyyy-mm-dd');

Top