表名 - 收据
coupondate - varchar
coupondate customer
02-04-2015 A
02-05-2015 A
02-06-2015 A
02-07-2015 A
02-08-2015 A
02-09-2015 A
05-04-2015 B
05-05-2015 B
05-06-2015 B
05-07-2015 B
05-08-2015 B
05-09-2015 B
我需要计算最小和最大优惠券之间的总天数。
FOR EX -
客户A的优惠券于2015年4月2日开始,于2015年9月2日结束。所以总天差为153天..
客户B的优惠券于2015年4月5日开始,于2015年9月5日结束。所以总天差为153天..
预期输出
customer totaldiff
A 153 days
B 153 days
下面是我的SQL查询
SELECT customer_name,
COUNT( coupondate ) AS totaldiff
FROM receipt_entry
GROUP BY customer_name
答案 0 :(得分:1)
SELECT customer_name,
DATEDIFF(MAX(coupondate), MIN(coupondate)) AS totaldiff
FROM receipt_entry
GROUP BY customer_name
根据您的评论进行编辑,以防coupondate
为VARCHAR
首先验证您的日期格式
SELECT customer_name,
DATEDIFF(MAX(STR_TO_DATE(coupondate, '%d-%m-%Y')),
MIN(STR_TO_DATE(coupondate, '%d-%m-%Y'))) AS totaldiff
FROM receipt_entry
GROUP BY customer_name
答案 1 :(得分:0)
试试这个,看看你是否得到了预期的结果。
如果你知道你想要的日期:
SELECT customer_name, DATEDIFF(DAY, '02/04/2015', '5/9/2015') AS totaldiff
FROM receipt_entry
GROUP BY customer_name
如果你需要获得你的价值而不了解它们,你可以尝试这样的事情:
SELECT A.customer_name,
DATEDIFF(DAY, (min(coupondate)), (max(coupondate))) AS totaldiff
FROM A.receipt_entry
GROUP BY A.customer_name
编辑:我错过了MySQL参考,对不起,以上是针对SQL Server的,这里是MySQL代码:
SELECT customer_name,
DATEDIFF(min(coupondate)), max(coupondate)) AS totaldiff
FROM receipt_entry
GROUP BY customer_name
编辑2:日期格式:
SELECT customer_name,
DATEDIFF(min(STR_TO_DATE(coupondate,'%d,%m,%Y')), max(STR_TO_DATE(coupondate,'%d,%m,%Y'))) AS totaldiff
FROM receipt_entry
GROUP BY customer_name