从当前时间戳默认获取日期时间

时间:2015-06-18 15:48:06

标签: php mysql datetime

当用户首次创建帐户时,默认情况下会将当前时间戳放在“日期”字段中,该字段是时间戳类型。

如果字段类型为“datetime”,则不允许我将默认值设为当前日期时间。我只能用“时间戳”来做到这一点。

但是现在我需要使用date_diff(),它需要日期时间格式。有没有办法将时间戳结果转换为datetime所以我可以把它放入date_diff?

我可以手动返回到创建新帐户的每个页面并让它找到当前日期,然后将其放入日期时间字段,但这显然会有更多工作(如果需要我会做的) )。

没有任何代码可以显示。这是我从数据库中获取值的地方(函数发送查询“SELECT date FROM user_login WHERE username = $ username”):

$udate = get_value("user_login", "date", "username", $_SESSION['user']['username']);

返回的值是日期和时间,但不是日期时间格式。所以,当我尝试以下内容时:

date_diff($udate, date(Ymd), true);

它给出错误

  

date_diff()期望参数1为DateTime,给定字符串

1 个答案:

答案 0 :(得分:0)

  

如果字段类型为" datetime",则不允许我将默认值设为当前日期时间。我只能用" timestamp"。

来做到这一点

MySQL允许您指定DATETIME字段,默认值为NOW()。这将由MySQL翻译为CURRENT_TIMESTAMP

然后,当创建用户时,MySQL会自动将CURRENT_TIMESTAMP插入您的date字段。

MySQL Date and Time Functions NOW()

修改

您的问题似乎与date_diff本身有关。您必须提供前两个参数作为类型DateTime,但您的MySQL数据库中的时间戳表示为string。创建一个DateTime对象并将其作为参数传递:

$udate = new DateTime(get_value("user_login", "date", "username", $_SESSION['user']['username']));
$now = new DateTime();

$diff = date_diff($udate, $now, true);

// Will spit out difference in days
echo $diff->format('%d days');