首页 > 解决方案 > 数字到日期转换

问题描述

我有下表。是否可以将月份列转换为日期?

ID    Month
 1    201805

预期成绩:

Id  Month    Date
1   201805   5/1/2018

标签: sqloracledateto-char

解决方案


您可以只使用to_date()合适的格式掩码,例如使用固定值作为演示:

select to_date(to_char(201805), 'YYYYMM') from dual;

TO_DATE(TO_CHAR(201
-------------------
2018-05-01 00:00:00

您不需要在值中显式添加天数(如@HoneyBadger 所示,或在转换为字符串后连接),因为无论如何它都会默认为每月的第一天。

所以你需要做类似的事情

to_date(to_char(month), 'YYYYMM')

可以跳过该to_char()部分,因为无论如何该数字都会隐式转换为字符串,但包含它会更完整。


目前尚不清楚您是打算将其作为查询的一部分(可能在视图中)还是要修改表;如果是后者,那么您可以使用虚拟列来避免重复数据,并且在月份发生变化时必须维护转换后的值。


推荐阅读