2

アドバンテージ データベースに、2009 年ではなく 1909 年になったレコードが多数あります。これらの日付のそれぞれに 100 年を追加する update ステートメントを実行するにはどうすればよいですか? (利点は、「str()」関数がなく、月 (mydate) を「/」で連結できないことです。

4

2 に答える 2

4

以下を使用できます

UPDATE mytable
SET mydate =  CAST( TIMESTAMPADD( SQL_TSI_YEAR, 100, datefield ) as SQL_DATE )
WHERE YEAR( datefield ) = 1909

(日付フィールドではなくタイムスタンプ フィールドがある場合は、CAST ... AS SQL_DATE を省略できます)


連結するには、文字列を連結して文字列に変更する必要があります。CAST または CONVERT を使用できます。

UPDATE mytable
SET datefield = CAST ( TRIM( CAST( MONTH(datefield) AS SQL_CHAR ) ) + '/' + TRIM( CAST( DAYOFMONTH( datefield ) AS SQL_CHAR ) ) + '/2009' AS SQL_DATE )
WHERE YEAR( datefield ) = 1909

(日付フィールドではなくタイムスタンプ フィールドがある場合は、CAST ... AS SQL_DATE を省略できますが、時刻を再度追加する必要があります)

于 2010-09-27T20:17:18.097 に答える
0

私の SQL はさびていますが、Advantage データベースはDATEADDをサポートしているようです。それで…えっと…こんな感じ?

UPDATE mytable
SET field = DATEADD(Year, 100, field)
FROM mytable
WHERE field < '19100101'
于 2010-09-27T19:22:49.687 に答える