将数字格式日期转换为Oracle中的日期

时间:2018-01-31 10:25:29

标签: oracle

这就是我的Date列的样子

RPT_DT (Data Type is Number)
20180131
20180130
20180129

我想从这些日期中提取月份(月或毫米),我在下面尝试

select extract(month from to_date(Rpt_dt))
from
(
select distinct to_char(to_date(RPT_DT,'yyyymmdd'),'mm/dd/yyyy') Rpt_dt 
from  TABLE_NAME
)

我收到错误"不是有效月份"

3 个答案:

答案 0 :(得分:3)

如果没有任何特殊原因进行双重转换,我建议您使用这个简单的查询来处理问题:

select substr(to_char(RPT_DT),5,2)from THE_TABLE

此查询应该更高效,因为它只进行一次转换。在你的样本中你改变:

  • 一个数字到日期
  • 然后是char的日期
  • 再次出现在日期
  • 最后你提取月份

如果有帮助请告诉我 河

答案 1 :(得分:1)

试试这个,

SELECT EXTRACT(MONTH FROM TO_DATE(rpt_dt, 'YYYYMMDD')) 
  FROM TABLE_NAME;

我相信你需要修改你的查询,因为你没有放置格式' MM / DD / YYYY',

select extract(month from to_date(Rpt_dt, 'MM/DD/YYYY'))
 from
 (
select distinct to_char(to_date(RPT_DT,'yyyymmdd'),'mm/dd/yyyy') Rpt_dt 
from  TABLE_NAME
 )

答案 2 :(得分:0)

这种来回转换毫无用处。试试这个

select 
   extract(month from to_date(RPT_DT,'yyyymmdd'))
from  TABLE_NAME;