我的数据库中有两个日期字段,名为“EFFECTIVE_DATE”和“POINT_DATE”
如何创建新的日期字段,其中日期由“EFFECTIVE_DATE”年份、“POINT_DATE”月份和“POINT_DATE”日期组成?
我通常会使用 Datefromparts,但这是 Oracle 数据库而不是 Microsoft
亲切的问候
最佳答案
这是使用ADD_MONTHS
和EXTRACT(YEAR FROM ....)
的方法。您只需添加或减去所需的月数(始终是 12 的倍数,因为您只更改年份)。与 TO_CHAR
/TO_DATE
解决方案不同,此方法处理闰日(2 月 29 日)。另一方面,请注意,如果将日期从 2003 年 2 月 28 日更改为 2012 年,则会将其更改为 2 月 29 日(ADD_MONTHS
会将一个月的最后一天更改为结果的最后一天)月)。
with
inputs as (
select date '2013-03-22' as effective_date,
date '2017-08-14' as point_date
from dual
)
-- end of TEST data (do not include in the solution!)
select effective_date, point_date,
add_months(point_date, 12 * ( extract (year from effective_date) -
extract (year from point_date) )
) as mixed_date
from inputs;
EFFECTIVE_DATE POINT_DATE MIXED_DATE
-------------- ---------- ----------
03/22/2013 08/14/2017 08/14/2013
关于sql - Oracle SQL 从零件创建日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42769518/