Oracle - 将字符串(包含日期)转换为字符串(另一种日期的格式)

时间:2016-01-07 13:48:39

标签: sql oracle date format

我有一个Oracle数据库,其中包含一个包含日期的列(String)的表(在java代码中,该日期的toString()被插入到String列中),格式为例如: 2月28日星期五00:00:00 CET 2014

所以我需要解决此问题,以获得标准格式=>而不是“Fri Feb 28 00:00:00 CET 2014”我将有“2014-02-28 00:00:00.0”

对于将来在数据库中的插入,问题是固定的=>在日期使用DataFormat而不是toString()。

但是!问题是如何转换数据库中已有的条目!

我想补充说,无法将列的类型更改为Date,因此它必须保留为String。

任何想法??

2 个答案:

答案 0 :(得分:1)

您需要先转换为时区,然后重新转换为所需格式的字符串。这是查询。

select to_char(to_timestamp_tz('Fri Feb 28 00:00:00 CET 2014', 'DY Mon DD HH24:MI:SS TZD YYYY'), 'YYYY-MM-DD HH24:MI:SS') || '.0' from dual;

TO_CHAR(TO_TIMESTAMP_
---------------------
2014-02-28 00:00:00.0

答案 1 :(得分:0)

要在评论部分回答有关如何更新数据的问题,请参阅以下代码段。

SQL> c/testing/date_testing
  1* create table date_testing (t varchar2(30))
SQL> /

Table created.

SQL> insert into date_testing values ('Fri Feb 28 00:00:00 CET 2014');

1 row created.

SQL> update date_testing 
set t = to_char(to_timestamp_tz('Fri Feb 28 00:00:00 CET 2014', 'DY Mon DD HH24:MI:SS TZD YYYY'), 'YYYY-MM-DD HH24:MI:SS') || '.0' 
where length(t) = 28;

1 row updated.

SQL> select * from date_testing;

T
------------------------------
2014-02-28 00:00:00.0