Mysql 如何在表中任意两个日期之间进行减法?

Mysql 如何在表中任意两个日期之间进行减法?,mysql,sql,select,datediff,Mysql,Sql,Select,Datediff,我有一个名为“Bill”的表,这是一个餐厅系统数据库的表。样本数据如下: Bill_Code, Date, Customer_ID, Order_Code, Total_Amount, Discount, Payable_Amount, Payment_Type, Staff_Name 'B201404012000', '2014-03-21', 'S8909608D', 'O222224', '0.00', '0.00', '0.00', 'CASH', 'D

我有一个名为“Bill”的表,这是一个餐厅系统数据库的表。样本数据如下:

  Bill_Code,          Date,    Customer_ID, Order_Code, Total_Amount, Discount, Payable_Amount, Payment_Type, Staff_Name   
'B201404012000', '2014-03-21', 'S8909608D', 'O222224', '0.00', '0.00', '0.00', 'CASH', 'Dany Lim'   
'B201404012030', '2014-04-01', 'S8409608D', 'O222221', '100.00', '0.00', '100.00', 'VISA', 'Arya Stark'   
'B201404012032', '2014-04-01', 'S8609608D', 'O222222', '80.00', '0.10', '72.00', 'VISA', 'Arya Stark'   
'B201404012033', '2014-04-21', 'S8709608D', 'O222223', '0.00', '0.00', '0.00', 'NETS', 'Rob Targa'   
'B201404012039', '2014-04-01', 'S8709655D', 'O222225', '0.00', '0.00', '0.00', 'MASTERCARD', 'Dany Lim'   
'B201404012053', '2014-04-15', 'S8909608D', 'O222224', '0.00', '0.00', '0.00', 'CASH', 'Dany Lim'   
'B201404012115', '2014-04-11', 'S8909608D', 'O222226', '50.00', '0.00', '50.00', 'CASH', 'Rob Targa'   
我需要找出哪两个具有相同客户ID的日期间隔为30天

也就是说,我需要了解是否有特定客户在两次访问之间间隔了30天

谢谢你的帮助。提前感谢。

您可以这样尝试:

要将时间字符串转换为秒数,请使用带%s修饰符的strftime函数。不带日期部分的时间字符串将被假定为日期为2000-01-01,但在计算差异时,这将被取消

要计算特定生产记录的暂停时间,请使用相关子查询;需要总聚合来处理零/一/多个匹配暂停

例如:

SELECT date,
       item,
       sum(strftime('%s', end) - strftime('%s', begin) -
           (SELECT total(strftime('%s', end) - strftime('%s', begin))
            FROM pause
            WHERE pause.date   = production.date
              AND pause.begin >= production.begin
              AND pause.end   <= production.end)
          ) AS seconds
FROM production
GROUP BY date,
         item

如果您需要了解日期介于首次订单和最后一次订单之间超过30天的退货客户,请尝试使用GROUP BY:

SELECT Customer_ID,
       MIN(Date) as MinDate,
       MAX(Date) as MaxDate
FROM BILL
GROUP BY Customer_ID 
HAVING DATEDIFF(MAX(Date),MIN(Date))>=30

您需要确切的30天还是30天以上?您可以在30天以上查看此线程。但是根据我的查询,我希望我可以通过替换>,抱歉,我不知道哪部分应该是表和列名来更改该部分。完美,这正是我所需要的。非常感谢你!您好,Valex,您认为是否可以在“最小日期”和“最大日期”列之后添加一列,其中以天为单位添加的确切差异数?使用COUNT语句做什么?@dizzychick只需在SELECT中添加DATEDIFFMAXDate、MINDate字段作为字段。