Получение объекта PHP DateTime в строковое представление даты MYSQL - PullRequest
3 голосов
/ 28 декабря 2008

У меня есть DateTime, который я хочу сохранить в столбце Date MySQL. Я использую MySQLi и подготовил заявления.

При привязке параметров я не могу указывать дату как тип, только строки и целые числа.

Как мне преобразовать DateTime в представление строки даты MySQL? По классу DateTime очень мало документации.

Ответы [ 2 ]

3 голосов
/ 28 декабря 2008

Я почти закрыл это как дубликат Преобразование из даты и времени MySQL в другой формат с PHP , но я думаю, что это на самом деле обратная проблема. В этом вопросе спрашивалось, как отформатировать дату, извлеченную из MySQL, а вы спрашиваете, как отформатировать дату для ввода в запрос.

Вариант 1:

SELECT * FROM MyTable WHERE DateTimeCol = ?

Вы можете отформатировать значение в формате YYYY-MM-DD HH:MM, который хочет MySQL:

<?php $mysql_date = date('Y-m-d H:i:s', $timestamp); ?>

Затем отправьте его как строковый параметр в запрос.

Вариант 2:

SELECT * FROM MyTable WHERE DateTimeCol = FROM_UNIXTIME(?)

Затем вы можете отправить значение временной метки в виде числового параметра для запроса.

Вариант 3:

SELECT * FROM MyTable WHERE DateTimeCol = STR_TO_DATE(?, '%m/%d/%y')

Вы можете отправлять самые разные строковые представления даты / времени, если указали форматирование в функции MySQL STR_TO_DATE(). Коды форматирования см. В функции DATE_FORMAT().

1 голос
/ 28 декабря 2008

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

Но если вы все еще хотите использовать DateTime-объекты, решением было бы преобразовать объекты в (unix) временные метки перед сохранением их в вашей базе данных. Преобразуйте временные метки обратно в объекты DateTime после чтения информации из вашей базы данных.

Чтобы создать объект DateTime из отметки времени, используйте date_create () с отметкой времени в качестве аргумента. Чтобы получить представление объектов в количестве секунд с начала эпохи Unix, используйте date_format ($ object, 'U') (U в верхнем регистре).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...