-2

如何用 null 替换无效的日期时间?

我正在对INT实际上是日期表示的列进行一些操作:

select 


DATEADD(DD, rbaging.billing_period_end - 693594, '1900-01-01'),
DATEADD(DD, rbaging.billing_period_apply - 693594, '1900-01-01'),

*


 from 

[kslap208].[c021]..RB_Resident_Aging  rbaging

join
[kslap208].[c021]..PA_Profile_BASE_1119 pro
on rbaging.bill_to_profile_id=pro.profile_id   --4242

join 
[kslap208].[c021]..PA_Admit_Det_BASE_10 unit
on unit.profile_id=rbaging.bill_to_profile_id

rbaging作为整数字段,应该是日期。这是一个示例:

734562
734776
734837

文档声明以这种方式将 INT 转换为日期:

在此处输入图像描述

在上面运行我的 sql 语句时,我得到:

Msg 517, Level 16, State 1, Line 1
Adding a value to a 'datetime' column caused overflow.

如何用 null 替换无效的日期时间?

4

1 回答 1

0
case when (rbaging.billing_period_end - 693594)>1
then DATEADD(DD, rbaging.billing_period_end - 693594, '1900-01-01')
else '' end,

case when (rbaging.billing_period_apply - 693594)>1
then DATEADD(DD, rbaging.billing_period_apply - 693594, '1900-01-01')
else ''
end

奇迹般有效!

于 2013-05-13T23:45:13.247 回答