【发布时间】:2014-07-08 17:47:58
【问题描述】:
我有时间戳列:
MAX_LOAD_DATE_TS TIMESTAMP(6)
我的load_dates 在date 和time 之间用T 格式化。
2014-07-02T10:46:22
有没有办法在 oracle 上将其转换为合法的timestamp?
【问题讨论】:
我有时间戳列:
MAX_LOAD_DATE_TS TIMESTAMP(6)
我的load_dates 在date 和time 之间用T 格式化。
2014-07-02T10:46:22
有没有办法在 oracle 上将其转换为合法的timestamp?
【问题讨论】:
如果它们被双引号括起来,您可以在格式字符串中嵌入文字:
select to_timestamp('2014-07-02T10:46:22', 'YYYY-MM-DD"T"HH24:MI:SS') from dual;
TO_TIMESTAMP('2014-07-02T10:46:22','YYYY-MM-DD"T"HH24:MI:SS')
-------------------------------------------------------------
02-JUL-14 10.46.22.000000000
这适用于to_date() 和to_timestamp(),而to_char() 则相反。
这是提到in the documentation:
日期时间格式模型中的标点符号和字符文字
您可以在日期格式模型中包含这些字符:
- 连字符、斜杠、逗号、句号和冒号等标点符号
- 字符文字,用双引号括起来
这些字符出现在与返回值相同的位置 它们出现在格式模型中。
【讨论】:
您可以使用适当的格式字符串以及 CAST 函数,如下所示:
SELECT
CAST(TO_DATE('2014-07-02T10:46:22', 'YYYY-MM-DD"T"HH24:MI:SS') AS TIMESTAMP(6)) AS timestamp_value
FROM table;
【讨论】:
cast(to_date() as timestamp) 而不仅仅是to_timestamp()?