ฉันได้รับข้อยกเว้น (ดูด้านล่าง) หากฉันพยายามทำ
resultset.getString("add_date");
สำหรับการเชื่อมต่อ JDBC กับฐานข้อมูล MySQL ที่มีค่า DATETIME เป็น 0000-00-00 00:00:00 (ค่ากึ่งว่างสำหรับ DATETIME) แม้ว่าฉันจะพยายามรับค่าเป็นสตริงไม่ใช่ในฐานะ วัตถุ.
ฉันทำได้โดยการทำ
SELECT CAST(add_date AS CHAR) as add_date
ซึ่งได้ผล แต่ดูเหมือนงี่เง่า ... มีวิธีที่ดีกว่านี้ไหม
จุดของฉันเป็นที่ฉันต้องการเพียงแค่สตริง DATETIME ดิบดังนั้นฉันสามารถแยกตัวเองเป็นอยู่
หมายเหตุ:นี่คือที่มาของ 0000: (จากhttp://dev.mysql.com/doc/refman/5.0/en/datetime.html )
ค่า DATETIME, DATE หรือ TIMESTAMP ที่ผิดกฎหมายจะถูกแปลงเป็นค่า "ศูนย์" ของประเภทที่เหมาะสม ('0000-00-00 00:00:00' หรือ '0000-00-00')
ข้อยกเว้นเฉพาะคือข้อยกเว้นนี้:
SQLException: Cannot convert value '0000-00-00 00:00:00' from column 5 to TIMESTAMP.
SQLState: S1009
VendorError: 0
java.sql.SQLException: Cannot convert value '0000-00-00 00:00:00' from column 5 to TIMESTAMP.
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1055)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:956)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:926)
at com.mysql.jdbc.ResultSetImpl.getTimestampFromString(ResultSetImpl.java:6343)
at com.mysql.jdbc.ResultSetImpl.getStringInternal(ResultSetImpl.java:5670)
at com.mysql.jdbc.ResultSetImpl.getString(ResultSetImpl.java:5491)
at com.mysql.jdbc.ResultSetImpl.getString(ResultSetImpl.java:5531)