2016-04-21 7 views
-1

Ich möchte Daten für die Summe (Kosten) in von Datum und Datum erhalten. meine Tabelle Felder Datentyp ist ID ist INT AUTO INCREMENT, dd ist varchar, mm ist varchar, yyyy varchar und dd Wert ist 01 bis 31, mm Wert ist 01 bis 12 und Jahr Wert ist 4 stellige Jahr (2016 oder 2015 ... ,) ich will genau Summe (Kosten) = 143Erhalte Daten von MySQL zwischen String-Integer-Datentyp

SELECT SUM(cost) FROM costing 
WHERE 
    ((dd> CAST('05' AS SIGNED) AND mm= CAST('12' AS SIGNED) AND yyyy= CAST('2015' AS SIGNED)) 
    AND 
    ((dd<= CAST('23' AS SIGNED) AND mm = CAST('01' AS SIGNED) AND yyyy= CAST('2016' AS SIGNED))) 

    order by id 

enter image description here

+1

Diese furchtbar kompliziert erscheint. Warum nicht ein 'DATE'-Feld haben und ein viel einfacheres' BETWEEN' machen? –

+0

Das ist verrückt. – Strawberry

Antwort

1

Sie die CAST AS DATE Funktion wie folgt verwendet werden:

SELECT 
    SUM(cost) FROM costing 
WHERE 
    CAST(CONCAT(yyyy,mm,dd) AS DATE) BETWEEN '2015-12-05' AND '2016-01-23' 
+0

Danke @selvinsource – JKR

+0

Wenn ich das erste Mal Bericht Generation ich weiß nicht von Datum, das 2015-12-05 bedeutet. Ich laufe am 5. Dezember 2015 Ich brauche vor allen Daten die Summe – JKR