如何在Oracle SQL中将时间转换为数字
我有一个带有时间数据类型的列,例如:如何在Oracle SQL中将时间转换为数字,oracle,Oracle,我有一个带有时间数据类型的列,例如: 01:00 24:00 03:00 select to_char(sysdate,'HH24MI') from dual; TO_CHAR(SYSDATE,'HH24MI') ------------------------- 0331 Elapsed: 00:00:00.007 1 rows selected. select to_char(systimestamp,'HH24MI') from d
01:00
24:00
03:00
select to_char(sysdate,'HH24MI') from dual;
TO_CHAR(SYSDATE,'HH24MI')
-------------------------
0331
Elapsed: 00:00:00.007
1 rows selected.
select to_char(systimestamp,'HH24MI') from dual;
TO_CHAR(SYSTIMESTAMP,'HH24MI')
------------------------------
0331
Elapsed: 00:00:00.006
1 rows selected.
我需要将这个时间转换成数字,这样它就会像
0100
2400
0300
首先,Oracle没有“时间”数据类型。如果您使用的是日期或时间戳数据类型,则可以使用TO_CHAR函数以您想要的任何样式格式化数据的时间部分。下面将返回您描述的样式,使用HH24将小时转换为小时格式,使用MI返回分钟:
TO_CHAR(date_column,'HH24MI')
例如:
01:00
24:00
03:00
select to_char(sysdate,'HH24MI') from dual;
TO_CHAR(SYSDATE,'HH24MI')
-------------------------
0331
Elapsed: 00:00:00.007
1 rows selected.
select to_char(systimestamp,'HH24MI') from dual;
TO_CHAR(SYSTIMESTAMP,'HH24MI')
------------------------------
0331
Elapsed: 00:00:00.006
1 rows selected.
首先,Oracle没有“时间”数据类型。如果您使用的是日期或时间戳数据类型,则可以使用TO_CHAR函数以您想要的任何样式格式化数据的时间部分。下面将返回您描述的样式,使用HH24将小时转换为小时格式,使用MI返回分钟:
TO_CHAR(date_column,'HH24MI')
例如:
01:00
24:00
03:00
select to_char(sysdate,'HH24MI') from dual;
TO_CHAR(SYSDATE,'HH24MI')
-------------------------
0331
Elapsed: 00:00:00.007
1 rows selected.
select to_char(systimestamp,'HH24MI') from dual;
TO_CHAR(SYSTIMESTAMP,'HH24MI')
------------------------------
0331
Elapsed: 00:00:00.006
1 rows selected.
好的,看看你发布的内容,如果列中包含的值看起来完全一样,那么它就是
CHAR
系列数据类型之一,因为Oracle中没有TIME
数据类型,正如pmdba已经告诉你的。如果你解释得恰当,而不是让我们猜测,肯定会有帮助
无论如何:如果是这样,并且值确实以这种方式存储:
SQL> create table test as
2 select '01:00' col from dual union all
3 select '24:00' from dual union all
4 select '03:00' from dual;
Table created.
SQL> desc test
Name Null? Type
----------------------------------------- -------- ---------------------------
COL CHAR(5)
然后,您只需删除冒号:
SQL> select col, replace(col, ':', '') result
2 from test;
COL RESULT
----- ----------
01:00 0100
24:00 2400
03:00 0300
SQL>
正如我所说:正确地解释它。好吧,看看您发布的内容,如果列中包含的值与此完全相同,那么它就是
CHAR
系列数据类型之一,因为Oracle中没有TIME
数据类型,正如pmdba已经告诉您的那样。如果你解释得恰当,而不是让我们猜测,肯定会有帮助
无论如何:如果是这样,并且值确实以这种方式存储:
SQL> create table test as
2 select '01:00' col from dual union all
3 select '24:00' from dual union all
4 select '03:00' from dual;
Table created.
SQL> desc test
Name Null? Type
----------------------------------------- -------- ---------------------------
COL CHAR(5)
然后,您只需删除冒号:
SQL> select col, replace(col, ':', '') result
2 from test;
COL RESULT
----- ----------
01:00 0100
24:00 2400
03:00 0300
SQL>
正如我所说:正确解释。还要注意,在您的示例中,您使用了“24:00”,但在24小时模式中,这不是有效时间。午夜-作为一天的开始-始终表示为全零:“00:00”或“0000”,可能的最大值为11:59 pm,即“23:59”或“2359”。还要注意,在您的示例中使用“24:00”,但这在24小时模型中不是有效时间。作为一天的开始,午夜始终表示为全零:“00:00”或“0000”,可能的最大值为11:59 pm,即“23:59”或“2359”。