1

SQL の既存の日付に月を追加しようとしています。表示される新しい列には、日列の代わりにフォローアップ列があります。selectステートメントでエラーが発生しました.助けてもらえますか?

Create table auctions(
item varchar2(50),
datebought date,
datesold date,
days number
);
Insert into auctions values (‘Radio’,’12-MAY-2001’,’21-MAY-2001’,9);
Select item,datebought,datesold,ADD MONTHS(datesold,3)”followup” from auctions;
4

3 に答える 3

7

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

add_months(datesold, 1)

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

または、次を使用できます。

datesold + INTERVAL '1' month

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

詳細はマニュアルを参照してください:
http://docs.oracle.com/cd/E11882_01/server.112/e26088/functions011.htm#i76717
/sql_elements001.htm#i48042

別物:

SQL の既存の日付に月を追加しようとしています。

では、なぜINSERTステートメントを使用しているのですか?既存の行のデータを変更するには、UPDATE. だから、あなたが本当に求めているのは次のようなものです:

update auctions
   set datesold = add_months(datesold, 1)
where item = 'Radio';
于 2012-11-17T23:02:29.423 に答える
0

これは、SQL で日付に月を追加するために使用できます。

select DATEADD(mm,1,getdate())

これは便利なリンクかもしれません。

于 2012-11-17T22:14:53.337 に答える
0
于 2012-11-17T22:13:14.327 に答える