在null日期不支持从int到DATE的转换

时间:2011-05-24 09:42:19

标签: java sql-server jdbc

我相信这是SQL 2000/2005中的一个错误/问题...如果我的结果在DATETIME列上为空,我得

com.microsoft.sqlserver.jdbc.sqlserverexception: 
 the conversion from int to date is unsupported

当我使用sql.getDate("ColumnName")时...... 任何解决方案吗?

[编辑] 大家好,感谢您的输入,下面是我的SQL查询

select p.planno            as PlanNumber, 
       t.TrancheID         as TrancheID, 
       t.tranchestartdate  as TrancheStartDate, 
       t.tranchereasoncode as TrancheReasonCode, 
       ai.ArrayItemDecode  TrancheReasonDescription, 
       t.trancheuwstage    as UnderwritingStatusCode 
from   plan_ p 
       inner join tranche t 
         on t.planno = p.planno 
            and t.trancheuwstage in ( 2, 4 ) 
            and p.planno = '040000000X6' 
       inner join arrayitem ai 
         on ai.ArrayNm = 'arrTraReas' 
            and ai.ArrayItemCode = t.tranchereasoncode;  

这里的罪魁祸首是tranchestartdate,这是DATETIME。我不能真正添加​​任何东西到tabel,因为我不允许更改现有的表结构,这是一个很大的系统。也许我可以在我的SQL中进行转换?我不太确定这是否肯定是一个空问题。可以通过ResultSet调试/监视并检查是否在调用getDate()之前检索了任何数据? [/ EIDT]

3 个答案:

答案 0 :(得分:0)

答案 1 :(得分:0)

如果您的应用程序(或驱动程序)无法处理空日期,那么最简单的方法可能是使用ISNULL(字段,< null替换日期>)并检查代码中的null替换日期。此方法使用幻数(日期)来指示空值,为true。它并不漂亮,但它快速而直接。

答案 2 :(得分:0)

您是从字段中选择日期时间还是在SELECT中动态构建日期时间?你可能需要CAST结果。

请参阅this article