1

我不理想这会发生什么。

这工作正常

SELECT 
SUM(LAMT)AS SUMAMT, 
COUNT(LAMT)AS CNT, 
IFNULL(LSUBDT,(CURDATE()-INTERVAL 9999 DAY))AS MXDT 
FROM product1 
WHERE LSUBBY IN (12,15,17,13,14,16) AND RECST=1 ORDER BY LSUBDT

它返回给我(很好)
SUMAMT > 645746.00
CNT > 4
MXDT > 2012-11-14 15:56:56

但是 当我使用MAX(IFNULL(LSUBDT,(CURDATE()-INTERVAL 9999 DAY)))AS MXDT 时,它返回给我
MXDT > 323031322d31312d32332030353a30323a3037

为什么?使用 strtotime 时,我不能用它在 php 中进行比较

1)。sql MAX() 有什么问题?
2)。除了 MAX() 之外还有什么选择吗?我想获得最新的 DATETIME。
3)。可以在哪里一些如何 php 将它转换回 2012-11-14 15:56:56 格式然后我继续在 php 中比较

顺便说一句
4)。MXDT > 2012-11-14 15:56:56 的返回结果也不正确,因为数据库中的最新日期时间是 2012-11-24 5:36:25,如果我删除总和和计数,则返回我正确。

谢谢

4

1 回答 1

0

试试这个:

SELECT SUM(SUMAMT)AS SUMAMT, SUM(CNT)AS CNT, MAX(MXDT) AS MXDT 
from (SELECT SUM(LAMT)AS SUMAMT, COUNT(LAMT)AS CNT, 
             IFNULL(LSUBDT,(CURDATE()-INTERVAL 9999 DAY)) AS MXDT 
      FROM (SELECT LAMT, LSUBDT FROM product1 
            WHERE LSUBBY IN (12,15,17,13,14,16) AND RECST=1 ORDER BY LSUBDT DESC 
     ) AS A GROUP BY LSUBDT
) AS B
于 2012-11-28T07:48:59.740 回答