我正在从一个PHP文件中设置一个数据库值。在php文件中,我有一个字符串变量,它存储unix时间戳值。
我的MySql表有一个模式,我必须将这些时间戳值存储在时间戳数据类型的登录字段中。
我试着发送
date('Y-m-d G:i:s', strtotime($userLogin));
到我的数据库,但它存储的只是0000-00-00 00:00:00
MySQL提供FROM_UNIXTIME( )
和UNIX_TIMESTAMP( )
函数,将Unix时间戳转换为MySQL日期格式,反之亦然。
示例:
$sql = "INSERT INTO yourtable(date, ..., ...) VALUES (FROM_UNIXTIME($yourdate), ..., ...)";
strtotime()用于将各种日期格式的字符串转换为UNIX时间戳。如果字符串已经是时间戳,那么对于strtotime()来说,它看起来不像是一个有意义的格式化日期/时间,它将失败。
如果字符串已经是一个时间戳,那么你不需要对它做任何事情,只需要将它强制转换为整数(严格来说,即使是这个步骤也不必要,但强制转换会去掉任何非数字字符,所以通常情况下强制转换不会有什么坏处)
此外,MySQL能够解析UNIX时间戳(使用FROM_UNIXTIME(),我想,我必须查找它才能确定)
如果$userLogin
保持timestamp
值,则不需要使用strtotime()
,
例如,这个应该工作-->
$userLogin = time();
date('Y-m-d G:i:s', $userLogin);
我不得不添加
$login = date('Y-m-d H:i:s',(int)($userLogin/1000));
它奏效了。。。