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');