PDO bindValue не вставляет дату - PullRequest
1 голос
/ 30 января 2020

Для работы мне нужно создать базу данных oracle и один mysql связаться.

На Oracle, у меня есть таблица vrp с (среди прочего) столбцом DATECREATION, в Формат DATE (увы, это то, что SQL разработчик говорит мне, когда я нажимаю на него). Он хранит даты в DD / MON. / YY формат. a screenshot of sql developer showing that the DATECREATION column is of type DATE a screenshot of sql developer showing that the DATECREATION column hold values in the dd/mon/yy format

Я должен скопировать эти значения в базу данных mysql. Сначала я пытался их игнорировать и использовал их как строки; но мне придется манипулировать ими, поэтому мне нужно иметь их в качестве даты.

Так что в PHP я делаю date('Y-m-d', strtotime($row[26])), и все работает отлично, превращая '24-OCT-19' в 2019-10-24

Затем я пытаюсь вставить это в мою Mysql базу данных, выполнив следующее:

$stmt = $conn->prepare("INSERT INTO [...] VALUES (?, ? [...]);
$stmt->bindValue(27, date('Y-m-d', strtotime($row[26]))); (yes there are a lot of columns)
$stmt->execute($row);

Если я отображаю данные, они выглядят нормально, я не перепутал свои индексы, так как столбцы смежных столбцов не дата не вставлена. Тем не менее, 27-й столбец получает 0000-00-00.

Нет ошибок или предупреждений, поэтому я даже не знаю, как это отладить.

Спасибо.

1 Ответ

1 голос
/ 30 января 2020

Перепишите ваш oracle оператор выбора.

И используйте следующее преобразование текста, чтобы получить mysql формат даты в виде строки

TO_CHAR( SYSDATE, 'YYYY-MM-DD HH24:MI:SS' )
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...