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

StackOverflow https://stackoverflow.com/questions/20598

Вопрос

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

Это было полезно?

Решение

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

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

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

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

Видишь Дата и время действия для получения дополнительной документации.

Когда дело доходит до хранения, вам решать, использовать ли формат даты MySQL для stroing в качестве форматированной даты;как целое число для хранения в виде метки времени UNIX;или вы можете использовать формат метки ВРЕМЕНИ MySQL, который преобразует числовую метку времени в читаемый формат. Проверьте документ MySQL для получения информации о ВРЕМЕННОЙ МЕТКЕ.

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

Вы можете избежать необходимости использовать 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() и 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';

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

if (strtotime($datetime) > strtotime($timestamp)) {
    echo 'Datetime later';
} else {
    echo 'Timestamp equal or greater';
}
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top