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

добавяне на месеци към дата SQL

Използването на функцията add_months() е неправилно. Това не са две думи, а само една (с долна черта)

add_months(datesold, 1)

обърнете внимание на долната черта _ между ADD и MONTHS . Това е извикване на функция, а не оператор.

Като алтернатива можете да използвате:

datesold + INTERVAL '1' month

Въпреки че си струва да се отбележи, че аритметиката с интервали е ограничена (ако не е нарушена), защото просто "увеличава" стойността на месеца на стойността на датата. Това може да доведе до невалидни дати (напр. от януари до февруари). Въпреки че това е документирано поведение (вижте връзките по-долу), считам това за грешка (стандартът SQL изисква тези операции да "Аритметиката се подчинява на естествените правила, свързани с датите и часовете, и да дава валидни резултати за дата, час или интервал според григорианския календар “)

Вижте ръководството за подробности:
http ://docs.oracle.com/cd/E11882_01/server.112/e26088/functions011.htm#i76717
http://docs.oracle .com/cd/E11882_01/server.112/e26088/sql_elements001.htm#i48042

Друго нещо:

Тогава защо използвате INSERT изявление? За да промените данните на съществуващи редове, трябва да използвате UPDATE . Така че изглежда това, което наистина търсите, е нещо подобно:

update auctions
   set datesold = add_months(datesold, 1)
where item = 'Radio';


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. WHENEVER SQLERROR никога не работи

  2. Групиране по ID с изключение на NULL записите

  3. Автоматизирайте задания за интегриране на данни на IRI с Oracle Job Scheduler

  4. Настройки на времето за изчакване на връзката за Oracle база данни

  5. Текст за търсене на Oracle с различни от английски знаци