如果我有一个格式为 YYYY-DD-MM 的 PHP 字符串和 MySQL 中的时间戳,有没有好的方法在它们之间进行转换?
题
我有兴趣在日期字符串和 MySQL 时间戳之间进行比较。然而,我没有看到一个简单的转换。我是否忽略了一些显而易见的事情?
解决方案
从时间戳转换为格式:
date('Y-m-d', $timestamp);
从格式化转换为时间戳:
mktime(0, 0, 0, $month, $day, $year, $is_dst);
当涉及到存储时,由您决定是否使用 MySQL DATE 格式作为格式化日期进行存储;作为一个整数,用于存储为 UNIX 时间戳;或者您可以使用 MySQL 的 TIMESTAMP 格式,它将数字时间戳转换为可读格式。 检查 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() 和 获取日期() 是两个可用于从字符串和时间戳获取日期的函数。不过,没有一个标准库函数可以在 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';
}
不隶属于 StackOverflow