我做过很多互联网搜索,并且找不到与此问题相似的问题报告,所以我希望这里有人可能知道出了什么问题。在我的java代码中,我有一个从数据库中提取数据的查询。我已经确认SQL格式正确,并且我在这个java文件中的所有其他查询运行正常。事实上,即使这个查询运行时我应该使用开发测试Tomcat服务器。但是,当我尝试使用开发测试Resin服务器运行此特定查询时(直到最近才完全正常工作)或QA测试服务器(也使用Tomcat),我收到此错误:
com.mysql.jdbc.MysqlDataTruncation:数据截断:日期时间值不正确:' 131500'

 131500'我假设它来自返回的第一个日期时间值的时间部分,即13:15:00'。 导致问题的此查询的特定部分是以下行:
CONCAT(DATE_FORMAT((SELECT datenotime), '%Y-%m-%d'),' ',DATE_FORMAT((SELECT appointmenttime FROM appointments WHERE appointmentdate = datenotime AND appointments.service_id = service.id), '%T'))
如果我删除了这个,那么我在任何服务器上都没有遇到任何问题,因此只有在格式化和连接时才会出现问题。我认为这里的问题必须是一些服务器设置?虽然我所知道的最近没有对Resin服务器进行任何更改。我尝试更新Resin的msyql连接器jar,但这没有用。有谁知道出了什么问题?
谢谢!
答案 0 :(得分:0)
我的猜测是,当datenotime为null时,您收到此错误。
这是有道理的,因为你连接的是datenotime,然后是约会时间。如果datenotime为null,那么你剩下的就是时间,它根本无法转换为任何已知的日期时间值。