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

それは私を返します (これは結構ですZ)
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 CONVERT を 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 に答える