2013-05-07 28 views
1

我试图将一个6位数的日期转换成一个正常的日期。'timestampadd'不是一个公认的内置函数名称

目前,我们有这样的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. 

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

+2

为什么你会觉得TIMESTAMPADD是一个有效的SQL Server功能? – billinkc 2013-05-07 22:54:52

+0

这些“int”值应该是什么? – Taryn 2013-05-07 22:55:08

+0

@bluefeet这就是01/01/0001以来的天数 – 2013-05-07 22:56:20

回答

1

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

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

迷人的白痴!非常感谢 – 2013-05-07 23:09:55

+0

对不起idont明白为什么2001而不是0001? – 2013-05-07 23:57:59

+0

因为在MS SQL 2K8上,'0001-01-01'不是有效的日期。甚至超过2000年,使得数学变得简单。嗯,太简单了,恐怕我没有占闰年!您需要稍微校准,大约为730,500。最简单的方法是测试几个日期并进行调整,直到获得正确结果。 – 2013-05-08 02:50:01

相关问题