Oracle:将日期时间转换为特定格式

时间:2014-08-21 19:39:08

标签: sql oracle type-conversion reformatting

全能的Stackoverflow下午好!

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

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

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

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

我认为可行的是:

to_date(VP_ACTUAL_RPT_DETAILS.ETLLOADER_OUT,'YYYYMMDDHH24MISSFF') 

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

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

4 个答案:

答案 0 :(得分: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类型(输出格式)

答案 1 :(得分:0)

选择    to_char(systimestamp,'yyyymmddhh24missFF')来自dual;

答案 2 :(得分:0)

您需要的Oracle功能是TO_CHAR。

to_char(VP_ACTUAL_RPT_DETAILS.ETLLOADER_OUT,' YYYYMMDDHH24MISSFF')

答案 3 :(得分: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也相对较新,时间/日期通常令人沮丧