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

Месеци между невръщане на правилната стойност

Ти грешиш. MONTHS_BETWEEN третира периода от време от date '2017-02-28' до date '2017-03-28' като точно един месец (един и същ ден в два съседни месеца). Това може да се прочете в документите:https://docs .oracle.com/cd/B19306_01/server.102/b14200/functions089.htm

Една дата е по-голяма от другата, така че получавате положително или отрицателно число (т.е. не нула) в зависимост от това кой е първият и кой е вторият параметър, и тъй като дните са равни, резултатът ще бъде цяло число. Това е 1 или -1 за следващите месеци.

Изчисляването на месеца е странно нещо така или иначе, тъй като месецът не е определен период от време. Изглежда, че имате предвид определено определение, което просто е различно от това как MONTHS_BETWEEN го определя. Нищо лошо в това. Бих се съгласил с MONTHS_BETWEEN в такъв случай; от 28 февруари до 28 март е "точно" един месец. Ако искате различни правила, приложете собствената си математика :-)



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Таблици с история на корекции в Oracle Apps (11i/R12.1/R12.2)

  2. Спрете или прекратите дълго изпълняваща се заявка в JDBC

  3. Oracle:копирайте ред, докато актуализирате едно поле за таблица с много колони

  4. Hibernate запазва остарелите данни с hibernate.jdbc.batch_versioned_data

  5. Преобразувайте Select Oracle Query в Updte за конкретен сценарий