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

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

Ответы [ 6 ]

14 голосов
/ 21 августа 2008

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

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

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

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

См. дата и mktime для получения дополнительной документации.

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

3 голосов
/ 27 августа 2008

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

SELECT UNIX_TIMESTAMP(timestamp) FROM sometable

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

2 голосов
/ 11 марта 2009

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

/**
 * 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;
}

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

0 голосов
/ 21 августа 2008

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

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';
}
0 голосов
/ 21 августа 2008

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

0 голосов
/ 21 августа 2008

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

...