将具有unix时间戳值的PHP字符串转换为MySQL时间戳值


Converting PHP String having a unix timestamp value to a MySQL Timestamp value

我正在从一个PHP文件中设置一个数据库值。在php文件中,我有一个字符串变量,它存储unix时间戳值。

我的MySql表有一个模式,我必须将这些时间戳值存储在时间戳数据类型的登录字段中。

我试着发送

date('Y-m-d G:i:s', strtotime($userLogin));

到我的数据库,但它存储的只是0000-00-00 00:00:00

MySQL有FROM_UNIXTIME()函数。

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

它奏效了。。。