我知道java.sql.Timestamp
不接受'0000-00-00 00:00:00'
作爲一個值(有很好的理由)。但我正在處理的數據庫是使用PHP和其他工具創建的,但似乎並不在意。檢查'0000-00-00'的時間戳而不鑄造
我想
我要的是複製數據從一個數據庫到另一個,而這樣做,動態更改(如Timestamp 0000-00-00
)
如何
一些值我先把SELECT
整個數據放在Object[]
的每一行。它需要是Object
,因爲我必須存儲該數組中的每個值,而不管類型。
後,我會投和轉換Object
爲String,所以我可以將它插入到數據庫
問題
,我說我要擺脫'0000-00-00 00:00:00'
時間戳,所以我需要檢查我的Timestamp
是否等於'000...'
。 但爲了看看我的Object
裏面存儲了什麼值,我需要將它轉換爲Timestamp
,這就是java.sql.SQLException
被拋出的地方,以警告我0000....
不能被轉換爲時間戳。
代碼(此方法返回獲取與INSERT-查詢的其餘部分連接起來的String)
Object column = row[columnIndex]; // column contains the value I want to check
if (column == null) { // when its a NULL I insert my dummy value
return "'0000-01-01 00:00:00'";
}
// here is the problem: to check if the value is 0000... I need to cast the object
// to a Timestamp.. but that's not allowed
if (((Timestamp) column).toString().equalsIgnoreCase("0000-00-00 00:00:00")) {
return "'0000-01-01 00:00:00'";
}
// when its neither null nor '0000... ' return the value as it is
String timestampString = ((Timestamp) column).toString();
return "'" + timestampString + "'";
很抱歉的長說明。
短缺問題
如何檢查是否有時間戳等於'0000-00-00 00:00:00'
沒有鑄造我Object
到Timestamp
?
那麼簡單地改變你的SQL語句以適合你的條件呢?所以你可以每次返回一個有效的時間戳?我不確定你的SQL方言,但也許你可以用'NVL'解決它? – bobbel
您可以告訴MySQL驅動程序在這樣的時間戳返回NULL –
您的意思是檢查SELECT語句中的0000?像SELECT IF(column ='0000-00-00','0000-01-01',列)...? – GameDroids