sql >> データベース >  >> RDS >> Oracle

日付に月を追加するSQL

    add_months()関数の使用法が正しくありません。 2つの単語ではなく、1つの単語(アンダースコア付き)です

    add_months(datesold, 1)
    

    アンダースコア_に注意してください ADDの間 およびMONTHS 。演算子ではなく関数呼び出しです。

    または、次を使用することもできます:

    datesold + INTERVAL '1' month
    

    ただし、間隔を使用した算術は、日付値の月の値を単に「インクリメント」するため、制限されている(壊れていない場合)ことに注意してください。これにより、日付が無効になる可能性があります(1月から2月など)。これは文書化された動作ですが(以下のリンクを参照)、これはバグだと思います(SQL標準では、これらの操作で「算術演算は日付と時刻に関連付けられた自然な規則に従い、グレゴリオ暦に従って有効な日時または間隔の結果を生成する」必要があります。 / em> ")

    詳細については、マニュアルを参照してください。
    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. PHPとMySQLでラウンドロビントーナメントを生成するにはどうすればよいですか?

    2. MSSQLServerバックエンドを使用したDCountおよびDLookupの代替ソリューション

    3. Oracleデータベースのアラビア文字

    4. SQLの相互に排他的な値