我有一个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。
任何想法??
答案 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