当用户首次创建帐户时,默认情况下会将当前时间戳放在“日期”字段中,该字段是时间戳类型。
如果字段类型为“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,给定字符串
答案 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');