将SQL VARCHAR2日期更改为其他日期格式

时间:2012-10-29 11:30:03

标签: sql time format utc sentence

我在数据库中有一个日期(存储为VARCHAR2),格式为:

20090123_163842.865
yyyyMMdd_hhmmss.ttt

我想创建一个SQL语句来获取:

23/01/2009 16:38:42,865
dd/MM/yyyy hh:mm:ss,ttt

我的目标是手动添加它(我知道数据可以从数据库导出,并导入到Excel中,但我想手动执行)到Excel作为可识别的日期。

我的SQL句子应该如何?

我试图通过:

select TO_TIMESTAMP(my_time_utc, 'YYYYMMDD_HH24MISS.FF3') from myTable

但我只能获得:

2009-01-23 16:38:42.865

由于

2 个答案:

答案 0 :(得分:3)

令我惊讶的是,有多少人混淆了这些行动。

首先,您需要将varchar'假日期'转换为实际日期:请使用to_date。 然后,您需要将日期转换为varchar以进行演示:请使用to_char

select to_char(to_date(column, 'yyyyMMdd_hhmmss.ttt'), 'dd/MM/yyyy hh:mm:ss,ttt')
from your_table;

应该做你想做的事。

答案 1 :(得分:1)

当oracle从数据库中检索日期字段并且向您展示时,会进行强制转换隐式转换。此转换的格式模式在oracle配置中设置。 Quoting oracle doc

  

Oracle日期值的默认日期格式来自   NLS_DATE_FORMAT和NLS_DATE_LANGUAGE初始化参数

  • 如果您从Excel执行查询,那么您的实际查询是完整的,因为excel知道日期格式,并且能够从Oracle中读取没有问题。

  • 如果您从屏幕结果中复制粘贴到excel,那么您应该使用所需的格式将日期转换回varchar,或者当然,更改oracle配置以匹配您的区域设置。

    < / LI>