甲骨文 to_timestamp
Oracle to_timestamp
关于 Oracle To_timestamp 的快速问题 To_timestamp。
我在 table 中有两个字段都是 varchars
1 个字段包含 YYYYMMDD 格式的值
第二个字段包含 hh24mmss 格式的值
我正在尝试将这两个字段转换为时间戳字段,
预期输出是 DD/MM/YYYY HH24:mm:ss
比如“2015 年 7 月 23 日 12:53:04”
然而,它给了我奇怪的结果......
像'7/15/0023 12:53:04'
好像年变成日,日变成年..
------------这是我的sql----------------
select
to_date(to_char(to_date('20150723','yyyymmdd'),'yyyymmdd'),'yyyymmdd') dt,
to_char(to_date(SUBSTR('005304000',1,6), 'hh24miss'), 'hh24:mi:ss') tm,
TO_TIMESTAMP(
to_date(to_char(to_date('20150723','yyyymmdd'),'yyyymmdd'),'yyyymmdd') ||
to_char(to_date(SUBSTR('005304000',1,6), 'hh24miss'), 'hh24:mi:ss'), 'yyyy/mm/dd HH24:MI:SS' ) dttm
from dual
您的转化链中有一层至多。如果在转换之前将两列连接起来会容易得多:
to_date(date_column||time_column, 'YYYYMMDDHH24MISS')
将 return 日期和时间(Oracle DATE
包括时间部分)。
现在您已经有了合适的日期值,接下来您可以根据需要设置格式:
to_char(to_date(date_column||time_column, 'YYYYMMDDHH24MISS'), 'yyyy/mm/dd HH24:MI:SS')
由于您的 "time" 列不包含毫秒,因此使用 to_timestamp
并没有真正的好处。
但是您应该真正修复您的 table,并将该信息存储在单个 DATE
(或 TIMESTAMP
)列中。在 varchar
列中存储日期始终是一个非常糟糕的选择。
关于 Oracle To_timestamp 的快速问题 To_timestamp。
我在 table 中有两个字段都是 varchars
1 个字段包含 YYYYMMDD 格式的值 第二个字段包含 hh24mmss 格式的值
我正在尝试将这两个字段转换为时间戳字段,
预期输出是 DD/MM/YYYY HH24:mm:ss 比如“2015 年 7 月 23 日 12:53:04”
然而,它给了我奇怪的结果...... 像'7/15/0023 12:53:04'
好像年变成日,日变成年..
------------这是我的sql----------------
select
to_date(to_char(to_date('20150723','yyyymmdd'),'yyyymmdd'),'yyyymmdd') dt,
to_char(to_date(SUBSTR('005304000',1,6), 'hh24miss'), 'hh24:mi:ss') tm,
TO_TIMESTAMP(
to_date(to_char(to_date('20150723','yyyymmdd'),'yyyymmdd'),'yyyymmdd') ||
to_char(to_date(SUBSTR('005304000',1,6), 'hh24miss'), 'hh24:mi:ss'), 'yyyy/mm/dd HH24:MI:SS' ) dttm
from dual
您的转化链中有一层至多。如果在转换之前将两列连接起来会容易得多:
to_date(date_column||time_column, 'YYYYMMDDHH24MISS')
将 return 日期和时间(Oracle DATE
包括时间部分)。
现在您已经有了合适的日期值,接下来您可以根据需要设置格式:
to_char(to_date(date_column||time_column, 'YYYYMMDDHH24MISS'), 'yyyy/mm/dd HH24:MI:SS')
由于您的 "time" 列不包含毫秒,因此使用 to_timestamp
并没有真正的好处。
但是您应该真正修复您的 table,并将该信息存储在单个 DATE
(或 TIMESTAMP
)列中。在 varchar
列中存储日期始终是一个非常糟糕的选择。