【问题标题】:MySql Count(sno) to Show old record by dateMySql Count(sno) 按日期显示旧记录
【发布时间】:2016-06-30 06:15:08
【问题描述】:

我有下表:(截图)

 SELECT 
     COUNT(h.sno) AS total 
 FROM
     receipt_mov_history h,
     receipt r 
 WHERE h.rec_sno = r.sno 
    AND h.assigned_to = 6 
    AND h.is_completed = 0 
    AND h.completed_by = 0
    AND h.assigned_on <= DATE_SUB(h.assigned_on, INTERVAL 15 DAY)
ORDER BY h.sno DESC 

我正在运行上述查询以获取所有已分配_to = 6 且早于或等于 15 天的记录(早于 15 天的记录)。在快照表中,您可以看到只有一行超过 15 天(突出显示)。但是上面的查询在结果中返回 2。 我不确定我的查询有什么问题。请在这方面帮助我。

【问题讨论】:

  • 问题出在这句话AND h.assigned_on &lt;= DATE_SUB(h.assigned_on, INTERVAL 15 DAY)
  • 试试这个...AND h.assigned_on &lt;= DATE_SUB(CURDATE(), INTERVAL 15 DAY)...
  • weldone,它就像一个魅力。谢谢

标签: jquery mysql database count


【解决方案1】:
SELECT 
     COUNT(h.sno) AS total 
 FROM
     receipt_mov_history h,
     receipt r 
 WHERE h.rec_sno = r.sno 
    AND h.assigned_to = 6 
    AND h.is_completed = 0 
    AND h.completed_by = 0
    AND h.assigned_on <= DATE_SUB(now(), INTERVAL 15 DAY)
ORDER BY h.sno DESC 

【讨论】:

  • 问题是使用必须从当前系统日期获取它
  • 是的,你是对的。 now() 和 curdate() 是否同样有效?
  • 由于 assigned_on 字段是 date 类型,NOW()CURDATE() 在这种情况下会给你相同的结果。 @AbdulRahman
  • 请查看fiddle@AbdulRahman
【解决方案2】:

DATE_SUB(h.assigned_on, INTERVAL 15 DAY) 更改为DATE_SUB(current_date(), INTERVAL 15 DAY)

应该比当前日期少 15 天

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-12-27
    • 1970-01-01
    • 2017-04-13
    • 1970-01-01
    • 2012-11-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多