PHP меняет месяц и день в метке времени
Вопрос
Верно.Я вставлял данные в базу данных MySQL и использовал следующее для создания метки времени:
$stamp = mktime($t[0], $t[1], $t[2], $d[2], $d[1], $d[0]);
К сожалению, день и месяц были перепутаны, и ниже указана правильная временная метка.
$stamp = mktime($t[0], $t[1], $t[2], $d[1], $d[2], $d[0]);
Это около 5000 записей.Как проще всего выполнить массовое обновление и исправление?
Большое спасибо!
Решение
Позволял ли механизм базы данных вставлять невозможные даты или у вас не было даты с полем «День» > 12?
В любом случае вы, вероятно, можете исправить это с помощью одного оператора обновления, но синтаксис зависит от используемого вами ядра базы данных.
Для MySQL вы должны использовать:
UPDATE myTable SET dateColumn = STR_TO_DATE(DATE_FORMAT(dateColumn, '%d-%c-%Y %T'), '%c-%d-%Y %T')
Другие советы
Вы не можете.В качестве пояснения приведу пример:
Предположим, вы имели в виду:День 13, месяц 2, год 1990, но это было прочитано как:День 2, 13 месяца, 1990 год.День 2, месяц 1, 1991 год.
Но предположим, что вы имели в виду:День 1, месяц 2, год 1991 года. Это было бы прочитано как:День 2, месяц 1, 1991 год.
Итак, если вы видите в базе данных день 2, месяц 1, 1991 год, откуда он взялся?
Это все равно, что сказать: я возвел целое число в квадрат, и результат — 36.С чего я начал, -6 или 6?