sql - Oracle SQL 从零件创建日期

标签 sql oracle

我的数据库中有两个日期字段,名为“EFFECTIVE_DATE”和“POINT_DATE”

如何创建新的日期字段,其中日期由“EFFECTIVE_DATE”年份、“POINT_DATE”月份和“POINT_DATE”日期组成?

我通常会使用 Datefromparts,但这是 Oracle 数据库而不是 Microsoft

亲切的问候

最佳答案

这是使用ADD_MONTHSEXTRACT(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/

相关文章:

子查询返回null时的mysql

sql - Oracle SQL "column ambiguously defined"和 `FETCH FIRST n ROWS ONLY`

oracle - 无法解决 cx_Oracle.DatabaseError : ORA-12514: TNS:listener does not currently know of service requested in connect descriptor

sql - 如何在子查询中使用别名?

SQL 静态和动态数据透视不起作用

SQL 下一年的第 15 个月

mysql - 如何查找具有所有其他列值的所有行

java - 带有公式的 Hibernate @OneToOne - 列不能外部连接到子查询

mysql - varchar2 和 number 数据类型导致 phpmyadmin 中的 SQL 查询编辑器出现错误

mysql - 在 MySQL 中,将获取列名的查询与对该列的第二个查询结合起来