暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Oracle 从datetime中提取HH:MM:SS中的时间作为字符串。

askTom 2017-05-23
339

问题描述

大家好,

我以不同的方式重新提出这个问题,希望有人能够帮助我

作为快速测试,我做了以下操作,希望可以复制

create table t ( test1 varchar2(22) );
复制


我将使用的数据,日期时间将按以下方式输入。

insert into t values ( '05/22/2017 02:20:55 AM' );
复制


当我现在尝试提取HH:MI:SS时

select to_char(test1, 'hh:mi:ss')
     from t
复制


我得到以下错误

ORA-01722: 无效编号
01722. 00000-“无效号码”
* 原因: 指定的数字无效。
* 操作: 指定一个有效的数字。

使用此测试示例,我可以使用什么来成功地提取仅在HH:MM:SS中的时间部分?

此外
我在数据库下的日期格式-> NLS是MM/DD/YYYY HH24:MI:SS


专家解答

由于您将日期存储为字符串 (坏主意),因此可以使用标准字符串操作将其提取。

SQL> insert into t values ( '05/22/2017 02:20:55 AM' );

1 row created.

SQL> select substr(test1,12,8) from t;

SUBSTR(TEST1,12,8)
--------------------------------
02:20:55
复制


选择1行。

或者,您可以将字符串转换为日期,此时,to_char函数变得可用,因为to_char不 * 将字符串作为输入,而是日期或数字 (这就是为什么你得到这个错误)。

SQL> select to_char(to_date(test1,'mm/dd/yyyy hh:mi:ss am'),'hh24:mi:ss') from t;

TO_CHAR(
--------
02:20:55
复制


理想情况下,您希望将表列定义为日期,此时,to_char将直接在该列上工作。
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论