我有一个简单的报告,一些用户可以运行它来检查我们是否从外部源接收到数据。它计算自最后一行更新后的分钟数,其中INS_TIME是接口插入数据的时间。
下面的代码。
select minute( now()-ins_time ) as LastUpdateMinutes
from p_electro
order by ins_time desc limit 1这是很好的工作,并在水晶报告中使用。不过,我正试图用额外的复杂性为另一张表再做一张。我复制了上面的代码,并按下面的方式添加到其中。
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这个标准应该基本上表明行是由接口插入的,然后显示上次输入的记录。然而,当我运行它时,它成功地运行,但我得到一个空返回(如下所示)。
LastUpdateMinutes
-----------------
| NULL |我期待着看到数千分钟,因为我们从上午11点1305.17开始就没有收到任何数据。
这对于第一张表来说很好,并且已经使用多年了。
为了添加一些上下文,我们的数据办事员每天运行该报告两次,如果以分钟为单位的时间超过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 它返回时间,这可能是我们实际使用的,但我想让它更准确一点。
提前感谢
发布于 2017-05-18 19:46:28
尝尝这个。
SELECT TIMESTAMPDIFF(MINUTE, ins_time, now()) AS LastUpdateMinutes
from p_treats
where location like '%e5%'
and creator is null
order by ins_time desc limit 1结帐-> MySQL TimeStampDiff
边注:
在第一个“工作”例子中使用的分钟(),我认为是给出了错误的答案。分钟()只提取日期/时间字符串的分钟部分。例如:选择分钟(‘2008-02-03 10:05:03')产量5
假设"ins_time“是数据类型"TimeStamp”或"DateTime",如果分钟(now()- ins_time)的结果大于1小时,则您的答案是错误的。我需要更多的测试才能确定。
https://stackoverflow.com/questions/44051733
复制相似问题