3

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

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

我试着发送

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

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

4

5 回答 5

2

MySQL 为此具有FROM_UNIXTIME()函数。

于 2012-07-11T22:18:00.903 回答
2

MySQL 提供FROM_UNIXTIME( )UNIX_TIMESTAMP( )函数将 Unix 时间戳转换为 MySQL 日期格式,反之亦然。

例子:

$sql = "INSERT INTO yourtable(date, ..., ...) VALUES (FROM_UNIXTIME($yourdate), ..., ...)";
于 2012-07-11T22:18:47.850 回答
1

strtotime () 用于将各种日期格式的字符串转换为 UNIX 时间戳。如果字符串已经是时间戳,那么对于 strtotime () 来说,它看起来不像是有意义的格式化日期/时间,它会失败。

如果字符串已经是时间戳,那么除了将其转换为整数之外,您无需对其执行任何操作(严格来说,即使该步骤也不是必需的,但转换会去除任何非数字字符,所以它施法通常不会受伤)

此外,MySQL 能够解析 UNIX 时间戳(使用 FROM_UNIXTIME(),我想,我必须查一下才能确定)

于 2012-07-11T22:18:05.373 回答
0

如果$userLogin持有timestamp价值超过你不需要使用strtotime()

例如,这个应该可以工作-->

$userLogin = time();
date('Y-m-d G:i:s', $userLogin);
于 2012-07-11T22:23:41.353 回答
0

我不得不添加

    $login = date('Y-m-d H:i:s',(int)($userLogin/1000));

它奏效了……

于 2012-07-11T23:49:46.427 回答