首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Oracle数据库中如何将原始数据转换为标准日期格式

Oracle数据库中如何将原始数据转换为标准日期格式
EN

Stack Overflow用户
提问于 2018-06-03 04:00:13
回答 4查看 2.2K关注 0票数 0

在Oracle中,varchar字段中的日期格式为2018-06-02T17:31:55.461Z。如何将其转换为Oracle数据库中的标准日期字段?

代码语言:javascript
复制
create table testmp1
(raw_date varchar2(4000));

insert into testmp1
(raw_date) 
values ('2018-06-02T17:31:55.461Z');

insert into testmp1
(raw_date) 
values ('2018-06-02T17:32:48.042Z');

insert into testmp1
(raw_date) 
values ('2015-04-29T19:51:30.0Z');

commit; 

create table testmp2
(new_date date);
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2018-06-03 05:01:13

您所拥有的是标准的JavaScript时间戳。在本例中,您要做的是将它们转换为Oracle值,然后可能再转换为TIMESTAMP值。

将文本转换为TIMESTAMP的格式掩码如下所示:

代码语言:javascript
复制
YYYY-MM-DD"T"HH24:MI:SS.FF3"Z"

TZ用双引号"括起来;它们与Oracle无关,根本不需要它们。您使用FF3来获取小数秒,因为有3位数的精度。总结这一切,你会得到:

代码语言:javascript
复制
SELECT TO_TIMESTAMP(raw_date, 'YYYY-MM-DD"T"HH24:MI:SS.FF3"Z"')
  FROM testmp1;

和:

代码语言:javascript
复制
INSERT INTO testmp2
  ( new_date )
SELECT CAST(TO_TIMESTAMP(raw_date, 'YYYY-MM-DD"T"HH24:MI:SS.FF3"Z"') AS DATE)
  FROM testmp1;

编辑:@Egret下面的评论让我想到了时区。时间戳中的Z表示零偏移量或UTC时间;要将其转换为您的本地时间,您需要执行以下操作:

代码语言:javascript
复制
SELECT TO_TIMESTAMP(raw_date, 'YYYY-MM-DD"T"HH24:MI:SS.FF3"Z"') - (SYS_EXTRACT_UTC(CURRENT_TIMESTAMP) - CURRENT_TIMESTAMP)
  FROM testmp1;

如果转换为DATE

代码语言:javascript
复制
SELECT CAST(TO_TIMESTAMP(raw_date, 'YYYY-MM-DD"T"HH24:MI:SS.FF3"Z"') - (SYS_EXTRACT_UTC(CURRENT_TIMESTAMP) - CURRENT_TIMESTAMP) AS DATE)
  FROM testmp1;

希望这能有所帮助。

票数 2
EN

Stack Overflow用户

发布于 2018-06-03 04:20:27

将字符串拆分为日期和时间,然后将其转换为日期,例如:

代码语言:javascript
复制
select to_date(substr('2015-04-29T19:51:30.0Z', 1, 10) ||
    substr('2015-04-29T19:51:30.0Z', 12, 8),
    'YYYY-MM-DDHH24:MI:SS')  from dual;

这给了你一个日期。它假定时区始终相同。

票数 0
EN

Stack Overflow用户

发布于 2018-06-03 04:48:36

代码语言:javascript
复制
select cast(to_timestamp(raw_date,'YYYY-MM-DD"T"HH24:MI:SS.ff3"Z"') as DATE) from testmp1;

insert into testmp2 (new_date) (select cast(to_timestamp(raw_date,'YYYY-MM-DD"T"HH24:MI:SS.ff3"Z"') as DATE) from testmp1);
commit;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50660688

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档