Sql ';时间戳添加';不是可识别的内置函数名

Sql ';时间戳添加';不是可识别的内置函数名,sql,sql-server,sql-server-2008,tsql,Sql,Sql Server,Sql Server 2008,Tsql,我想把一个6位数的日期转换成一个普通的日期 目前,我们在DB中有以下内容: 734562 734776 734837 以下是我正在尝试的: select timestampadd( sql_tsi_day ,rbaging.billing_period_end

我想把一个6位数的日期转换成一个普通的日期

目前,我们在DB中有以下内容:

734562
734776
734837
以下是我正在尝试的:

select 



                    timestampadd(
                                    sql_tsi_day
                                    ,rbaging.billing_period_end
                                    ,cast('0001-01-01' as sql_timestamp)
                                )
                    -1,*


 from 

[kslap208].[c021]..RB_Resident_Aging  rbaging
我得到的错误是:

Msg 195, Level 15, State 10, Line 5
'timestampadd' is not a recognized built-in function name.

如何将此字段转换为常规日期字段?

如果远程源是整数,或者可以转换为1,我相信这应该可以做到:

 SELECT DATEADD(DD, Field - 730000, '2001-01-01')

如果远程源是一个整数,或者可以转换为一,我相信这应该可以做到:

 SELECT DATEADD(DD, Field - 730000, '2001-01-01')


为什么您认为timestampadd是一个有效的SQL Server函数?这些
int
值一旦是日期,应该是什么?@bluefeet这是自0001年1月1日以来经过的天数您需要与
DATEADD(D,字段,'0001-01-01')
等效的值,但首先您需要将日期移到一个更合理的基数,比如1900-01-01。@JonofAllTrades你可以和发明普适SQL的白痴讨论一下为什么你认为timestampadd是一个有效的SQL Server函数?这些
int
值一旦是日期就应该是什么?@bluefeet这是自0001年1月1日以来经过的天数,你需要的是
DATEADD的等效值(D,字段“0001-01-01”)
,但首先你需要将日期调整到一个更合理的基数,比如1900-01-01。@JonofAllTrades你可以和发明普适SQL的白痴们一起讨论这个问题。对不起,我不明白为什么是2001而不是0001?因为在MS SQL 2K8上,“0001-01-01”不是一个有效的日期。将它增加2000年使数学变得简单。嗯,t哦,很简单,恐怕我没有考虑闰年!你需要稍微校准一下,大约730500。最简单的方法是测试几个日期并进行调整,直到得到正确的结果。顺便问一下,你知道是否可以在链接数据源上创建索引视图吗???不,我不相信。索引视图的限制非常严格。您可以维护数据的本地副本,并对其编制索引。或者您可以使用
OPENQUERY
强制在远端进行筛选,如果有索引可以使用的话。抱歉,我不明白为什么是2001而不是0001?因为在MS SQL 2K8上,“0001-01-01”不是有效日期。将其增加2个偶数,000年使数学变得简单。嗯,太简单了,恐怕我没有考虑闰年!你需要稍微校准一下,大约730500年。最简单的方法是测试几个日期并进行调整,直到得到正确的结果。顺便问一下,你知道是否可以在链接数据源上创建索引视图吗???不,我不知道我相信是这样。索引视图的限制非常严格。您可以维护数据的本地副本,并对其进行索引。或者您可以使用
OPENQUERY
强制在远端进行筛选,前提是那里有您可以使用的索引。