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