全能的Stackoverflow下午好!
我并不过分熟悉Oracle中的SQL,但需要获取日期/时间值并将其转换为与其他应用程序的特定格式匹配的字符串。我发现很多类似的场景,但那些与Oracle文档混合的场景并没有让我得到我需要的东西。
输入格式如下: 8/6/2014 3:05:21 PM
我需要输入到其他应用程序的格式如下: YYYYMMDDhhmmssuu
uu是微秒(我想在Oracle中的小数秒)。
我认为可行的是:
to_date(VP_ACTUAL_RPT_DETAILS.ETLLOADER_OUT,'YYYYMMDDHH24MISSFF')
我认为只有在输入格式与输出格式匹配时才有效。
如果你能提供帮助,我将不胜感激!
答案 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也相对较新,时间/日期通常令人沮丧