При выборе меток времени (которые могут иметь значение null по умолчанию) из исходной таблицы с помощью сценария PHP и при попытке вставить в идентичную таблицу назначения я получаю сообщение об ошибке «СИНТАКСИС значения даты, времени или отметки времени недопустим SQL состояние 22008 '. Я считаю, что это потому, что некоторые исходные записи являются нулевыми. Когда скрипт запускается, я получаю около половины записей, успешно вставленных в таблицу назначения, но только те, которые имеют фактические значения меток времени. Нулевые записи не были вставлены.
Мои заявления:
SELECT
TIMESTAMP_EXPIRATION
FROM TABLE1;
INSERT INTO TABLE2 (EXPIRATION_T)
VALUES ($TIMESTAMP_EXPIRATION);
Проблема в том, что половина моих исходных записей пуста, а другая половина - TIMESTAMP со степенью 6
Определение исходной и целевой таблиц имеет столбец как «TIMESTAMP_EXPIRATION FOR COLUMN 0011TTT TIMESTAMP DEFAULT NULL» и «EXPIRATION_T FOR COLUMN 00EETTT TIMESTAMP DEFAULT NULL»
Что можно сделать, чтобы получить нулевые значения также вставить?
ОБНОВЛЕНИЕ: СОЗДАНИЕ СОЗДАНИЯ
CREATE TABLE TABLE1 (
ID INTEGER GENERATED ALWAYS AS IDENTITY (
START WITH 1 INCREMENT BY 1 ),
TIMESTAMP_EXPIRATION FOR COLUMN 0011TTT TIMESTAMP DEFAULT NULL )
RCDFMT TABLE1 ;
CREATE TABLE TABLE2 (
ID INTEGER GENERATED ALWAYS AS IDENTITY (
START WITH 1 INCREMENT BY 1 ),
EXPIRATION_T} FOR COLUMN 00EETTT TIMESTAMP DEFAULT NULL )
RCDFMT TABLE2 ;
ОБНОВЛЕНИЕ: PHP СЦЕНАРИЙ
$getDev = "
SELECT
ID,
TIMESTAMP_EXPIRATION
FROM TABLE1
";
$stmt = odbc_exec($DB2connDEV, $getDev);
while($gettingItems = odbc_fetch_array($stmt)){
$rows[] = $gettingItems;
}
foreach($rows as $row){
$originalID = $row['ID'];
$expiration = $row['TIMESTAMP_EXPIRATION'];
$insertTable = "INSERT INTO table2 (id,expiration_t) VALUES (
$originalID,
'$expiration')";
$stmt = odbc_exec($DB2connPROD, $insertTable);
}