1

下面是查询

SELECT
cap_newspaper_page.capnewspaperID,
cap_newspaper_page.capnewspaperPageID,
cap_newspaper.newspaperStationID,
cap_newspaper_page.insertDate
FROM
cap_newspaper_page

我写了一个查询,结果如下!但问题是我想要每一天的总时差。就像我想要 6 月 27 日的总持续时间以及其他日期一样。请帮我解决这个问题。

在此处输入图像描述

I want Time difference from -2012-06-27 18:54:27- To -2012-06-27 19:26:58-
and respectively for other dates! 

点击这里查看大图

4

3 回答 3

2

你可以使用 date_diff。

将日期保存到变量中。那么,如果你将所有这些都与今天进行比较,

    $insert_date=$sql['insertDate'];
    $now = date_create("now");
$compDate = date_create(date($insert_date));
$interval = date_diff($compDate,$now);

编辑:如果您正在运行一个while循环来显示您的数据 - 您可以简单地使用一个数组来保存每条记录的时间,然后您可以根据您希望使用的两者之间的差异来显示时间。

如果我对您的理解正确,那将与此类似;

while ($row=mysql_fetch_array($results)) {
$i=$i+1;
$insert_date[$i] = $row['insertDate'];
if ($i!=0){
$interval = date_diff($insert_date[$i],$insert_date[$i-1]);
}
echo "<tr><td>" . $row['insertDate'] . "</td><td>" . $interval . "</td></tr>";
}
于 2012-10-05T12:03:01.240 回答
0
SELECT
cap_newspaper_page.capnewspaperID,
cap_newspaper_page.capnewspaperPageID,
cap_newspaper.newspaperStationID,
(select sum(TIME(cap_newspaper_page.insertDate)) from cap_newspaper_page a where DATE(a.insertDate) = DATE(b.insertDate)
group by DATE(a.insertDate))
FROM
cap_newspaper_page b
于 2012-10-05T12:13:11.523 回答
0

让我知道这个是否有效:

SELECT
IF(@tmpDate != DATE(q.insertDate), @firstDate := DATE(q.insertDate), @firstDate := @firstDate) as seeIfDateChanged, @tmpDate := q.insertDate, q.*, TIMEDIFF(q.insertDate, @firstDate) AS timeDifference
FROM (
SELECT
*
FROM
yourTable yt
, (SELECT @firstDate:=NULL, @tmpDate:=NULL) r
ORDER BY insertDate
) q
于 2012-10-05T14:31:31.700 回答