首頁 >資料庫 >mysql教程 >如何在 JDBC 中處理'0000-00-00 00:00:00”DATETIME 值?

如何在 JDBC 中處理'0000-00-00 00:00:00”DATETIME 值?

Linda Hamilton
Linda Hamilton原創
2025-01-03 15:46:39954瀏覽

How to Handle

在 JDBC 中處理「0000-00-00 00:00:00」DATETIME 值

使用下列指令從 MySQL 資料庫擷取 DATETIME值時JDBC,如果該值設定為準空值,則可能會遇到異常「0000-00-00 00:00:00」。當嘗試使用 resultset.getString("add_date") 以字串形式檢索值時,即使目的是取得原始字串,也會出現此問題。

替代解決方案

此問題的解決方法是使用以下SQL 查詢:

SELECT CAST(add_date AS CHAR) as add_date

此查詢強制轉換DATETIME 值轉換為CHAR ,確保將其作為字串檢索。但是,由於其額外的處理要求,它被認為是不太理想的解決方案。

JDBC URL 設定

另一種方法是直接在資料來源中設定JDBC URL設定:

jdbc:mysql://yourserver:3306/yourdatabase?zeroDateTimeBehavior=convertToNull

透過將zeroDateBehavior屬性設定為convertToNull,可以指示JDBC驅動程式進行轉換將全零DATETIME 值設為NULL,而不是拋出例外。

來源和其他選項

官方 MySQL 手冊提供了有關如何處理全零的更多資訊DATETIME值位於Connector/J:

https://dev.mysql.com/doc/connector-j/8.0/en/connector-j-reference-configuration-properties.html#property_zeroDateTimeBehavior

根據根據手冊,Connector/J 版本3.0.x 預設將全零DATETIME 值轉換為NULL。然而,在 3.1 版本中,預設行為更改為拋出異常。 ZeroDateTimeBehavior 屬性可讓您透過指定下列選項之一來自訂此行為:

  • 例外(預設):使用 SQLState S1009 引發例外狀況。
  • convertToNull:將值轉換為NULL.
  • round:將日期四捨五入到最接近的值,即0001-01-01.

以上是如何在 JDBC 中處理'0000-00-00 00:00:00”DATETIME 值?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn