Oracle
 sql >> Baza danych >  >> RDS >> Oracle

dodawanie miesięcy do daty SQL

Twoje użycie funkcji add_months() jest nieprawidłowe. To nie dwa słowa, to tylko jedno (z podkreśleniem)

add_months(datesold, 1)

zwróć uwagę na podkreślenie _ między ADD i MONTHS . To wywołanie funkcji, a nie operator.

Alternatywnie możesz użyć:

datesold + INTERVAL '1' month

Chociaż warto zauważyć, że arytmetyka z interwałami jest ograniczona (jeśli nie złamana), ponieważ po prostu „zwiększa” wartość miesiąca wartości daty. Może to prowadzić do nieprawidłowych dat (np. od stycznia do lutego). Chociaż jest to udokumentowane zachowanie (patrz poniższe linki), uważam to za błąd (standard SQL wymaga, aby te operacje "Arytmetyka przestrzegała naturalnych reguł związanych z datami i godzinami i dawała prawidłowe wyniki daty i czasu lub przedziału zgodnie z kalendarzem gregoriańskim ")

Szczegóły znajdziesz w instrukcji:
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

Kolejna rzecz:

Więc dlaczego używasz INSERT? oświadczenie? Aby zmienić dane istniejących wierszy, użyj UPDATE . Wygląda więc na to, że naprawdę szukasz czegoś takiego:

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. Wdrażanie cx_Oracle w różnych wersjach klienta Oracle

  2. Nieprawidłowy identyfikator Oracle nie rozumie ciągu

  3. Dołącz do forum pytań i odpowiedzi dla programistów

  4. Dlaczego moja aktualizacja JDBC nie działa?

  5. Funkcja BITAND() w Oracle