如果我有一个格式为YYYY-DD-MM的PHP字符串和MySQL中的一个时间戳,是否可以在它们之间进行转换?

时间:2020-03-05 18:41:40  来源:igfitidea点击:

我对在日期字符串和MySQL时间戳之间进行比较感兴趣。但是,我看不到容易的转换。我是否忽略了明显的东西?

解决方案

回答

从时间戳转换为格式:

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

从格式转换为时间戳:

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

有关更多文档,请参见date和mktime。

关于存储,由我们决定是否使用MySQL DATE格式作为格式日期存储。作为用于存储为UNIX时间戳的整数;或者我们可以使用MySQL的TIMESTAMP格式,将数字时间戳转换为可读格式。检查MySQL文档中的TIMESTAMP信息。

回答

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

回答

使用PHP Date函数。我们可能需要使用mysql中的UNIX_TIMESTAMP函数在查询中将mysql时间戳转换为Unix时间戳。

回答

日期字符串,格式为:

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';
}

回答

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

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

我希望这有帮助