[英]In Mysql query DATE_SUB not returning expected result
這是我的MySQL查詢
SELECT COUNT(*) CallCnt,ANBCnt, t2.Duration,(ANB) Number,
((DATE_SUB('2012-12-10 05:22:30',
INTERVAL (SELECT CONCAT(''',t2.Duration:0,''')) MINUTE_SECOND))) Mintime,
('2012-12-10 05:22:30') Maxtime,
(1) TYPE,
(t1.CallTypeId)
FROM cdr_temp1_check t1
INNER JOIN cdr_temp1_check_details t2
ON t1.CallTypeId=t2.CallTypeId
WHERE TimeStamp1 >= DATE_SUB('2012-12-10 05:22:30',
INTERVAL (SELECT CONCAT(''',t2.Duration:0,''')) MINUTE_SECOND)
AND TimeStamp1<='2012-12-10 05:22:30'
GROUP BY ANB
HAVING COUNT(*) > ANBCnt
返回的結果是
CallCnt ANBCnt Duration Number Mintime Maxtime TYPE CallTypeId
------- ------ -------- ---------- ------------------- ------------------- ------ ----------
267 40 25 2042011234 2012-12-10 05:20:30 2012-12-10 05:22:30 1 5
134 20 15 9895697970 2012-12-10 05:20:30 2012-12-10 05:22:30 1 3
預期結果
CallCnt ANBCnt Duration Number Mintime Maxtime TYPE CallTypeId
------- ------ -------- ---------- ------------------- ------------------- ------ ----------
267 40 25 2042011234 2012-12-10 04:57:30 2012-12-10 05:22:30 1 5
134 20 15 9895697970 2012-12-10 04:57:30 2012-12-10 05:22:30 1 3
顯示問題的列是Mintime,應為Maxtime minus Duration
我建議您嘗試其他方法。
假設maxtime只是您要輸入查詢的字符串。 您可以使用DATE_SUB直接減去所需的時間間隔
((DATE_SUB('2012-12-10 05:22:30',
INTERVAL t2.Duration MINUTE))) Mintime
因此您的整個查詢將是:
SELECT COUNT(*) CallCnt,ANBCnt,
t2.Duration,(ANB) Number,
((DATE_SUB('2012-12-10 05:22:30',
INTERVAL t2.Duration MINUTE))) Mintime,
('2012-12-10 05:22:30') Maxtime,(1) TYPE,
(t1.CallTypeId) FROM cdr_temp1_check t1
INNER JOIN cdr_temp1_check_details t2 ON t1.CallTypeId=t2.CallTypeId
WHERE TimeStamp1>=DATE_SUB('2012-12-10 05:22:30',
INTERVAL t2.Duration MINUTE)
AND TimeStamp1<='2012-12-10 05:22:30'
GROUP BY ANB HAVING COUNT(*)>ANBCnt
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.