我的Advantage数据库中有一堆记录最终是1909年,而不是2009年。如何运行一个更新语句,每个日期会增加100年? (优势告诉我没有“str()”函数,它不会让我连接月份(mydate)和“/".
答案 0 :(得分: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,但是您需要在时间内重新添加)
答案 1 :(得分:0)
我的SQL很生疏,但Advantage Database似乎支持DATEADD。所以...呃......这样的事情?
UPDATE mytable
SET field = DATEADD(Year, 100, field)
FROM mytable
WHERE field < '19100101'