1

下午好,全能的 Stackoverflow!

我不太熟悉 Oracle 中的 SQL,但需要获取日期/时间值并将其转换为与另一个应用程序的特定格式匹配的字符串。我发现了很多类似的场景,但是那些与一些 Oracle 文档混合在一起的场景还没有让我达到我需要的东西。

输入格式如下:8/6/2014 3:05:21 PM

我需要输入到其他应用程序的格式如下:YYYYMMDDhhmmssuu

uu 是微秒(我猜是 Oracle 中的小数秒)。

我认为可行的是:

to_date(VP_ACTUAL_RPT_DETAILS.ETLLOADER_OUT,'YYYYMMDDHH24MISSFF') 

我认为只有在输入格式与输出格式匹配时才有效。

如果您能提供帮助,我将不胜感激!

4

4 回答 4

3

如果您从 DATE 类型转换为输出格式使用TO_CHAR函数:

TO_CHAR(VP_ACTUAL_RPT_DETAILS.ETLLOADER_OUT,'YYYYMMDDHH24MISSFF')

如果您从 VARCHAR2 类型转换,则使用这两个函数:

TO_CHAR(TO_DATE(VP_ACTUAL_RPT_DETAILS.ETLLOADER_OUT, 'MM/DD/YYYY HH:MI:SS'),'YYYYMMDDHH24MISSFF')

TO_DATE- 从 VARCHAR2 类型(输入格式)转换为 DATE 类型;TO_CHAR- 从 DATE 类型到 VARCHAR2 类型(输出格式)

于 2014-08-21T20:09:49.647 回答
0

您需要的 Oracle 函数是 TO_CHAR。

to_char(VP_ACTUAL_RPT_DETAILS.ETLLOADER_OUT,'YYYYMMDDHH24MISSFF')

于 2014-08-21T20:11:48.520 回答
0

因为您的格式正在寻找一个字符串变量,所以我不确定它是否需要一个 to_date。

我的建议是尝试结合 to_char() 和 to_date() 函数

to_char(to_date(VP_ACTUAL_RPT_DETAILS.ETLLOADER_OUT,'DD/MM/YYYY HH:MM:SS),'YYYYMMDDHH24MISSFF')

或者

to_date(to_char(VP_ACTUAL_RPT_DETAILS.ETLLOADER_OUT,'YYYYMMDDHH24MISSFF'),''DD/MM/YYYY HH:MM:SS')

是我会尝试的功能。Oracle 对日期/字符串的输入可能非常挑剔,我对 Oracle 也比较陌生,时间/日期常常令人沮丧

于 2014-08-21T20:13:13.973 回答
0

从对偶中选择 to_char(systimestamp,'yyyymmddhh24missFF');

于 2014-08-21T20:08:00.233 回答