我有下表。是否可以将“月份”列转换为日期?
ID Month
1 201805
预期结果:
Id Month Date
1 201805 5/1/2018
答案 0 :(得分:6)
您可以仅将to_date()
与适当的格式掩码一起使用,例如以固定值作为演示:
select to_date(to_char(201805), 'YYYYMM') from dual;
TO_DATE(TO_CHAR(201
-------------------
2018-05-01 00:00:00
由于it will default to the first of the month仍然不需要为该值显式添加天数(如@HoneyBadger所示,或在转换为字符串后进行串联)。
所以您需要做类似的事情
to_date(to_char(month), 'YYYYMM')
to_char()
部分可以跳过,因为无论如何该数字都会隐式转换为字符串,但是包含它会更完整。
尚不清楚您打算将其作为查询的一部分(也许在视图中)还是要修改表;如果是后者,那么您可以使用虚拟列来避免重复数据,并且如果月份变化,则必须保持转换后的值。