我在数据库中有一个日期(存储为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
由于
答案 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>