adding months to a date SQL

后端 未结 3 1074
离开以前
离开以前 2021-01-25 18:21

I am trying to add months to an existing date in SQL. The new column displayed will have a followup column instead of a days column. Im getting an error in the select statement.

3条回答
  •  北海茫月
    2021-01-25 18:40

    Your usage of the add_months() function is incorrect. It's not two words, it's just one (with an underscore)

    add_months(datesold, 1)
    

    note the underscore _ between ADD and MONTHS. It's function call not an operator.

    Alternatively you could use:

    datesold + INTERVAL '1' month
    

    Although it's worth noting that the arithmetics with intervals is limited (if not broken) because it simply "increments" the month value of the date value. That can lead to invalid dates (e.g. from January to February). Although this is documented behaviour (see below links) I consider this a bug (the SQL standard requires those operations to "Arithmetic obey the natural rules associated with dates and times and yield valid datetime or interval results according to the Gregorian calendar")

    See the manual for details:
    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

    Another thing:

    I am trying to add months to an existing date in SQL.

    Then why are you using an INSERT statement? To change the data of existing rows you should use UPDATE. So it seems what you are really after is something like this:

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

提交回复
热议问题