select minute(now() - ins_time)返回null

时间:2017-05-18 15:17:08

标签: mysql crystal-reports datediff

我有一个简单的报告,一些用户可以运行以检查我们是否已从外部源接收数据。它计算自上一行更新以来的分钟数,其中INS_TIME是接口插入数据的时间。

以下代码。

select minute( now()-ins_time )  as LastUpdateMinutes 
from p_electro 
order by ins_time desc limit 1

这很好用,可以在Crystal Report中使用。然而,我正在尝试为另一个表格制作另一个具有更多复杂性的表格。我复制了上面的代码并添加到下面。

select minute( now()-ins_time )  as LastUpdateMinutes 
from p_treats
where location like '%e5%' and creator is null
order by ins_time desc limit 1

此标准应基本上表示界面已插入行,然后显示自上一次输入以来的分钟数。但是,当我运行它时,它运行成功,但我得到一个NULL返回(如下所示)。

LastUpdateMinutes
-----------------
|   NULL        |

我期待看到数千分钟,因为自上午11点13分以来我们没有收到任何数据。

这适用于第一张桌子并且已经使用多年。

要添加一些上下文,我们的数据工作人员每天运行两次此报告,并报告以分钟为单位的时间是否超过20分钟。在第二个表格中,我们没有收到5天的数据(这要归功于这次网络攻击后的措施),直到灯泡点燃我的脑袋才发现它可能受到影响。

我想为此表创建另一份报告,我们可以将其添加到文员日常检查中,并尽早了解缺失的数据

任何人都有任何建议为什么第二个例子不起作用,但第一个例子呢?以及如何解决它?

我尝试了多种语法:

SELECT 
datediff(now(), ins_time) AS DiffDate
FROM
p_treats
WHERE
location LIKE 'e5%' and 
creator is null
ORDER BY ins_time DESC
LIMIT 1

这实际上可以缩短天数并且:

SELECT 
timediff(now(), ins_time) AS DiffDate
FROM
p_hdtreatment
WHERE
hpwhere LIKE 'e5%' and 
creator is null
ORDER BY ins_time DESC
LIMIT 1 

返回小时数,这可能实际上是我们使用的,但我想让它更精确一点。

提前致谢

1 个答案:

答案 0 :(得分:1)

试试这个。

    @for(int i = 0; i < Model.Count() ; i++)
    { 
        <tr>
            <td>
            @Html.HiddenFor(modelItem => i.Id)
            @Html.DisplayNameFor(modelItem => model.MchName)
            </td>
        </tr>

     }

结帐 - &gt; MySQL TimeStampDiff

旁注:

分钟()用于第一个&#34;工作&#34;例如,我相信给你错误的答案.. minute()只会拉出日期/时间字符串的分钟部分。例如。 SELECT MINUTE(&#39; 2008-02-03 10:05:03&#39;)产生5

假设&#34; ins_time&#34;是数据类型&#34; TimeStamp&#34;或&#34; DateTime&#34;,如果MINUTE(now() - ins_time)的结果大于1小时,则答案是错误的。我需要更多地测试这一点。