如何在Advantage数据库中添加100年的日期

时间:2010-09-27 19:05:15

标签: sql advantage-database-server date-arithmetic

我的Advantage数据库中有一堆记录最终是1909年,而不是2009年。如何运行一个更新语句,每个日期会增加100年? (优势告诉我没有“str()”函数,它不会让我连接月份(mydate)和“/".

2 个答案:

答案 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'