Если у меня есть строка PHP в формате YYYY-DD-MM и метка времени в MySQL, есть ли хороший способ конвертировать между ними?

Мне интересно провести сравнение между строкой даты и меткой времени MySQL. Однако я не вижу легкого преобразования. Я не замечаю чего-то очевидного?

Стоит ли изучать 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 и хотите разрабатывать...
6
0
13 825
6
Перейти к ответу Данный вопрос помечен как решенный

Ответы 6

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

Преобразование из метки времени в формат:

date('Y-m-d', $timestamp);

Преобразование из форматированного в метку времени:

mktime(0, 0, 0, $month, $day, $year, $is_dst);

Дополнительную документацию см. В Дата и mktime.

Когда дело доходит до сохранения, решать вам, использовать ли формат MySQL DATE для хранения в качестве форматированной даты; как целое число для хранения в виде отметки времени UNIX; или вы можете использовать формат MySQL TIMESTAMP, который преобразует числовую метку времени в читаемый формат. Проверьте MySQL Doc для информации TIMESTAMP.

strtotime () и getdate () - две функции, которые можно использовать для получения дат из строк и временных меток. Однако не существует стандартной библиотечной функции, которая преобразует метки времени MySQL и PHP.

Используйте функцию PHP Дата. Возможно, вам придется преобразовать метку времени mysql в метку времени Unix в вашем запросе с помощью функции UNIX_TIMESTAMP в mysql.

Строка даты в форме:

YYYY-MM-DD

не имеет времени, связанного с этим. Метка времени MySQL имеет вид:

YYYY-MM-DD HH:mm:ss

чтобы сравнить эти два, вам нужно либо добавить время в строку даты, например, полночь

$datetime = '2008-08-21'.' 00:00:00';

а затем используйте функцию для сравнения времени между ними.

if (strtotime($datetime) > strtotime($timestamp)) {
    echo 'Datetime later';
} else {
    echo 'Timestamp equal or greater';
}

Вы можете избежать использования strtotime() или getdate() в PHP, используя функцию MySQL UNIX_TIMESTAMP().

SELECT UNIX_TIMESTAMP(timestamp) FROM sometable

Полученные данные будут стандартной целочисленной меткой времени Unix, поэтому вы можете провести прямое сравнение с time().

Я написал эту небольшую функцию, чтобы упростить процесс:

/**
 * Convert MySQL datetime to PHP time
 */
function convert_datetime($datetime) {
  //example: 2008-02-07 12:19:32
  $values = split(" ", $datetime);

  $dates = split("-", $values[0]);
  $times = split(":", $values[1]);

  $newdate = mktime($times[0], $times[1], $times[2], $dates[1], $dates[2], $dates[0]);

  return $newdate;
}

надеюсь, это поможет

Вся эта функция может быть заменена одним вызовом strtotime. Зачем изобретать велосипед?

Paolo Bergantino 11.03.2009 21:41

Моя проблема, я построил это, поскольку у меня были проблемы в прошлом (по причине, которая ускользает от меня сейчас).

St. John Johnson 11.03.2009 21:58

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