6

我有兴趣在日期字符串和 MySQL 时间戳之间进行比较。但是,我没有看到一个简单的转换。我是否忽略了一些明显的东西?

4

6 回答 6

14

从时间戳转换为格式:

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

从格式化转换为时间戳:

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

有关更多文档,请参阅日期mktime

在存储方面,是否使用 MySQL DATE 格式作为格式化日期由您决定;作为用于存储为 UNIX 时间戳的整数;或者您可以使用 MySQL 的 TIMESTAMP 格式,它将数字时间戳转换为可读格式。检查 MySQL Doc以获取 TIMESTAMP 信息。

于 2008-08-21T17:29:34.113 回答
3

通过使用 MySQL 的函数,您可以避免在PHPstrtotime()中使用或。getdate()UNIX_TIMESTAMP()

SELECT UNIX_TIMESTAMP(timestamp) FROM sometable

结果数据将是标准整数 Unix 时间戳,因此您可以直接比较time().

于 2008-08-27T15:37:51.057 回答
2

我写了这个小函数来简化这个过程:

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

我希望这有帮助

于 2009-03-11T18:38:16.480 回答
0

strtotime()getdate()是两个可用于从字符串和时间戳中获取日期的函数。但是,没有标准库函数可以在 MySQL 和 PHP 时间戳之间进行转换。

于 2008-08-21T17:30:10.463 回答
0

使用 PHP日期函数。您可能必须使用 mysql 中的UNIX_TIMESTAMP函数将 mysql 时间戳转换为查询中的 Unix 时间戳。

于 2008-08-21T17:30:20.663 回答
0

形式的日期字符串:

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';
}
于 2008-08-21T17:57:38.820 回答