0

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

谢谢

4

2 回答 2

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;

应该做你想做的。

于 2012-10-29T11:33:32.723 回答
1

当 oracle 从数据库中检索一个日期字段并将其显示给您时,会进行强制转换隐式转换。此转换的格式模式在 oracle 配置中设置。引用 oracle 文档

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

  • 如果您从 Excel 执行查询,您的实际查询就足够了,因为 excel 知道日期格式并且能够毫无问题地从 Oracle 读取。

  • 如果您从屏幕结果复制粘贴到 excel,那么您应该使用您想要的格式将日期转换为 varchar,或者,当然,更改 oracle 配置以匹配您的语言环境。

于 2012-10-29T11:37:51.407 回答