我在查询SQL中的某些数据时遇到问题。列数据类型是varchar,它具有日期时间戳作为其名称的一部分,如DUMMY2_20140713.pdf。在查询SQL时将表达式转换为数据类型datetime的算术溢出错误
要搜索的周日期之间的文件duration.so试图文件名的一部分转换为日期如下:
select file_name,file_name
from t_pdf_weekly_violation
where CONVERT(datetime, SUBSTRING(file_name, CHARINDEX('_', file_name) + 1, 8), 112) between 20150506 and 20150513;
但它扔exception..Please找到下面的堆栈跟踪:
com.microsoft.sqlserver.jdbc.SQLServerException:算术溢出 将表达式转换为数据类型datetime时出错。在 com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDatabaseError(SQLServerException.java:196) 在 com.microsoft.sqlserver.jdbc.SQLServerResultSet $ FetchBuffer.nextRow(SQLServerResultSet.java:4700) 在 com.microsoft。 sqlserver.jdbc.SQLServerResultSet.fetchBufferNext(SQLServerResultSet.java:1683) 在 com.microsoft.sqlserver.jdbc.SQLServerResultSet.next(SQLServerResultSet.java:956) 在databaseconnection.ConnectionURL.main(ConnectionURL.java:36)
对此有任何想法?
在此先感谢
只要注意,为什么两次' file_name'在查询中的选择列表中 – HaveNoDisplayName
'CONVERT(datetime'替换为'CONVERT(int' –
Piyush:取文件名的子字符串,所以使用file_name两次。 – user3863488