簡體   English   中英

在MySQL查詢DATE_SUB中未返回預期結果

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM