【发布时间】:2023-03-30 04:29:01
【问题描述】:
我相信这是 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。我不能向表中添加任何内容,因为我不允许更改现有的表结构,这是一个大系统。也许我可以在我的 SQL 中进行强制转换?我不太确定这是否绝对是一个空问题。在我调用 getDate() 之前,可以调试/观察 ResultSet 并检查是否检索到任何数据? [/EIDT]
【问题讨论】:
-
没有
null日期? -
JDBC 认为该列是 int 肯定是有原因的。您确定 SQL 字段不是 TIMESTAMP 数据类型吗?
-
@詹姆斯。没有任何转换的
NULL文字被 SQL Server 视为int,但int确实转换为datetimeOK。SELECT CAST(0 AS DATETIME)提供1900-01-01 00:00:00.000和SELECT CAST(CAST(NULL AS INT) AS DATETIME)提供NULL
标签: java sql-server jdbc