使用另外两个填充字段的 DateDiff 结果更新字段

Update field with result of DateDiff of two other populated fields

提问人:Lori 提问时间:5/30/2015 最后编辑:Lori 更新时间:5/30/2015 访问量:834

问:

我需要做的就是获取两个日期时间字段,并将第三个字段设置为其结果。

这必须很容易,但我已经工作了 2 天,但无法获得我想要的结果。

$con = mysqli_connect(DBHOST, DBUSER, DBPASS, DBNAME) or die('Connection failed: ' . mysqli_connect_error());

$helpme=mysqli_query($con, "UPDATE chat_main SET Exact_Time = DATEDIFF(Start_TimeStamp, End_TimeStamp)");

mysqli_close($con);
php mysql sql

评论

1赞 Federkun 5/30/2015
您应该从查询中获取什么?update
0赞 kainaw 5/30/2015
$helpme是 UPDATE 查询的结果。它不会返回结果。因此,您不能用于获取结果。如果您的查询是 SELECT,则可以得到结果。mysql_fetch_array
0赞 Lori 5/30/2015
好吧,所以你是说,使用select,然后进行fetch,然后用结果更新表?
0赞 kainaw 5/30/2015
是的。在 UPDATE 之后,使用 :,然后获取结果。当然,您应该检查是否从 UPDATE 或 SELECT 收到错误。如果出现错误,则无法提取任何内容。$helpme = mysqliquery($con, "SELECT Exact_Time from chat_main");
2赞 kainaw 5/30/2015
@Lori DATEDIFF 函数返回一个整数(两个日期之间的天数)。看起来您的两个字段在同一天,因此 DATEDIFF 可能会返回 0。我想你想要 TIMEDIFF。

答:

2赞 kainaw 5/30/2015 #1

问题是 DATEDIFF 返回两个日期之间的天数。在实现的上下文中,这两个日期似乎是同一天。因此,由于 DATEDIFF,您总是得到 0。我建议使用 TIMEDIFF,这将是两个时间的差异,而不是两个日期的差异。

2赞 spencer7593 5/30/2015 #2

这个问题真的应该回答。如果其他人添加了更好的答案,我将删除答案。

该函数对 only 的“日期”部分进行操作,并返回整数天数。DATEDIFFDATETIME

若要获取两个 DATETIME 值之间的差值(以秒数表示),可以使用该函数。TIMESTAMPDIFF

若要将差值作为值返回,可以使用函数。TIMETIMEDIFF


这就引出了一个问题,为什么你需要存储它,因为这个表达式可以在 SELECT 语句中计算。(存储它的一个很好的理由是你想在它上面添加一个索引,而MySQL不支持基于函数的索引。


而且,语句不返回结果集,因此您不能像从语句中获取行一样从中获取行。UPDATESELECT

评论

0赞 Lori 5/30/2015
谢谢@Spencer7593。我了解所有这些,我只是出于测试目的获取行以查看信息。timediff 是我正在处理的项目的关键部分,我要求存储它。没有其他原因。