Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Oracle SQL中将时间转换为数字_Oracle - Fatal编程技术网

如何在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”。