Получение объекта PHP DateTime в строковое представление даты MYSQL

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

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

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

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

Bill Karwin 28.12.2008 23:24
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
3
1
15 765
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Я почти закрыл это как дубликат Преобразование даты и времени 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().

Вторые необязательны, но да, это работает. Если вы используете «H» (12-часовой формат) вместо «G» (24-часовой формат), вам также следует включить AM / PM. Обратитесь к документации DATE_FORMAT () для получения полного списка кодов.

Bill Karwin 29.12.2008 21:33

«h» - это 12-часовые часы, «H» - это 24 с ведущими нулями, а «G» - это 24 без ведущих нулей. Вы действительно должны использовать "H".

Christian Studer 02.02.2009 16:46

Я отредактировал строку формата в варианте 1 выше с учетом этих комментариев от ıu и christian studer.

Bill Karwin 02.02.2009 20:07

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

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

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

Другие вопросы по теме