Подтвердить что ты не робот

MySQL - как разбирать строковое значение в формате DATETIME внутри инструкции INSERT?

У меня есть MySQL database, с столбцом, который является типом даты DATETIME.

Я получаю строковое значение для даты/времени из внешнего приложения. Это строковое значение выглядит следующим образом:

'5/15/2012 8:06:26 AM'

MySQL выдает ошибку в INSERT: "Error. Incorrect datetime value". Моим обходным решением было изменить тип столбца на VARCHAR, который работает, но мне действительно нужны данные как правильная дата и время для будущего использования.

Я изучил принятое форматирование для значений MySQL DATETIME и обнаружил, что MySQL хочет формат DATETIME как 'YYYY-MM-DD HH:MM:SS'.

Я не могу изменить внешнее приложение, чтобы переформатировать строку даты/времени в формате, поэтому мой единственный шанс - с этим справиться.

Мне нужно, по-моему, проанализировать существующую строку, используя MySQL syntax внутри моего оператора INSERT, но я не уверен, как это сделать. У меня есть идея, что мне нужно использовать предложение SELECT, возможно, STR_TO_DATE, как-то в сочетании с моей инструкцией INSERT.

Вот мой текущий оператор INSERT. Я удалил другие поля, которые не вызывают проблемы, просто чтобы сделать пример чистым.

INSERT INTO tblInquiry (fldInquiryReceivedDateTime) VALUES ('5/15/2012 8:06:26')

Спасибо за любую помощь, я новичок SQL.

4b9b3361

Ответ 1

Используйте MySQL STR_TO_DATE() функцию для синтаксического анализа строки, которую вы пытаетесь вставить:

INSERT INTO tblInquiry (fldInquiryReceivedDateTime) VALUES
  (STR_TO_DATE('5/15/2012 8:06:26 AM', '%c/%e/%Y %r'))