如果我有一个格式为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; }
我希望这有帮助