Я знаю, что java.sql.Timestamp
не принимает '0000-00-00 00:00:00'
в качестве значения (без уважительной причины). Но база данных, которую я обрабатываю, была создана с помощью PHP и других инструментов, которые, похоже, не заботятся.проверить отметки времени для '0000-00-00' без литья
, что я хочу
, что я хочу, чтобы скопировать данные из одной базы данных в другую и при этом, что, изменить некоторые значения на лету (как в Timestamp 0000-00-00
)
как
I сначала SELECT
все данные и поместите каждую строку в Object[]
. Он должен быть Object
, так как я должен хранить каждое значение в этом массиве, независимо от типа.
позже брошу и преобразовать Object
в строку, так что я могу вставить его в базу данных
проблема
, как я сказал, что хочу, чтобы избавиться от '0000-00-00 00:00:00'
отметки времени, так что я необходимо проверить, равен ли мой Timestamp
'000...'
. Но для того, чтобы увидеть, какое значение хранится внутри моего Object
, мне нужно наложить его на Timestamp
, и вот тут java.sql.SQLException
получает предупреждение, чтобы предупредить меня, что 0000....
не может быть отправлен на отметку времени.
код (этот метод возвращает строку, которая получает сцепляется с остальной частью ВСТАВИТЬ-запрос)
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 для такой отметки времени. –
Вы имеете в виду проверку на 0000 внутри инструкции SELECT? Как SELECT IF (столбец = '0000-00-00', '0000-01-01', столбец) ...? – GameDroids