首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在mysql中计数带有负整数的行数

问在mysql中计数带有负整数的行数
EN

Stack Overflow用户
提问于 2020-06-21 00:39:46
回答 1查看 79关注 0票数 1

我的DB中有一个时间戳列,我想要对传递的行数进行求和,让我向您展示对此的查询!

代码语言:javascript
复制
SELECT TIMESTAMPDIFF(MINUTE, `Opened`, NOW()) as PastDue FROM `Task`

不是这个查询返回完美的结果,并返回过去到期为负值而其他行为正的所有行。

现在我想数负行的数目,所以我做了

代码语言:javascript
复制
SELECT COUNT(TIMESTAMPDIFF(MINUTE, `Opened`, NOW())) < 0 as PastDue FROM `Task`

它现在返回,现在有两行负结果,所以它应该返回两行,但是它总是返回,有人能指出我遗漏了什么吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-06-21 00:43:06

代码语言:javascript
复制
COUNT(TIMESTAMPDIFF(MINUTE, `Opened`, NOW())) < 0

是一个布尔表达式(检查COUNT是否小于0),它总是返回0 (false),因为COUNT至少必须是0。相反,您可以做的是SUM测试的结果(因为MySQL在数字上下文中将布尔值视为0或1):

代码语言:javascript
复制
SELECT SUM(TIMESTAMPDIFF(MINUTE, `Opened`, NOW()) < 0) as PastDue FROM `Task`

请注意,您可以简化此查询,只需将Opened与NOW()进行比较,无论是在SUM中。

代码语言:javascript
复制
SELECT SUM(`Opened` > NOW()) AS PastDue
FROM `Task`

或者使用COUNT(*)和一个WHERE子句:

代码语言:javascript
复制
SELECT COUNT(*) AS PastDue
FROM `Task`
WHERE `Opened` > NOW()

请注意,根据您问题的措辞,您可能希望将条件更改为

代码语言:javascript
复制
`Opened` > NOW() 

至

代码语言:javascript
复制
`Opened` < NOW()
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62493270

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档