Oracle
 sql >> база данни >  >> RDS >> Oracle

Oracle SQL Създаване на дата от части

Ето подход, използващ ADD_MONTHS и EXTRACT(YEAR FROM ....) . Просто добавяте или изваждате необходимия брой месеци (винаги кратно на 12, тъй като сменяте само годината). За разлика от TO_CHAR / TO_DATE решения, този подход се справя с високосните дни (29 фев.). От друга страна, имайте предвид, че промяната на датата от 28 февруари 2003 г. на 2012 г. ще я промени на 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


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Pl/SQL - Вземете имена на колони от заявка

  2. Вмъкване в таблица с помощта на набор от резултати от двойна заявка?

  3. ORA-04091:таблицата [blah] мутира, тригерът/функцията може да не я види

  4. Как да конфигурирам allocationSize в persistence.xml вместо Entity

  5. Синтаксична грешка в SQL оператор „WITH“ за изключване на ключова дума