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

Sql 如何在Advantage数据库中为日期添加100年,sql,advantage-database-server,date-arithmetic,Sql,Advantage Database Server,Date Arithmetic,在我的Advantage数据库中,我有一大堆记录,这些记录是在1909年结束的,而不是2009年。如何运行更新语句,使每个日期增加100年?(Advantage告诉我没有“str()”函数,它不允许我将月份(mydate)与“/”连接起来。我的SQL已经生锈,但Advantage数据库似乎支持。所以……呃……类似这样的东西 UPDATE mytable SET field = DATEADD(Year, 100, field) FROM mytable WHERE field < '191

在我的Advantage数据库中,我有一大堆记录,这些记录是在1909年结束的,而不是2009年。如何运行更新语句,使每个日期增加100年?(Advantage告诉我没有“str()”函数,它不允许我将月份(mydate)与“/”连接起来。

我的SQL已经生锈,但Advantage数据库似乎支持。所以……呃……类似这样的东西

UPDATE mytable
SET field = DATEADD(Year, 100, field)
FROM mytable
WHERE field < '19100101'
更新mytable
设置字段=日期添加(年份,100,字段)
从mytable
其中字段<'19100101'

您可以使用以下命令

UPDATE mytable
SET mydate =  CAST( TIMESTAMPADD( SQL_TSI_YEAR, 100, datefield ) as SQL_DATE )
WHERE YEAR( datefield ) = 1909
(如果您有一个时间戳字段而不是日期字段,则可以省略转换…作为SQL\u日期)


若要连接,必须连接字符串才能更改为可以使用强制转换或转换的字符串

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

(如果您有一个时间戳字段而不是日期字段,您可以省略强制转换…作为SQL\u日期,但您需要重新添加时间)

ah,我缺少的是SQL\u字符。谢谢!dateadd()给了我一个错误…可能是V10的问题?(我仍然在9.1上)