mysql + Tage zählen
Tobi
- datenbank
1 misterunknown0 Tobi
0 dedlfix0 dedlfix
Hi,
mach ich etwas falsch? Weil ich grade eben 2-3 unsinnige Ergebnisse erhalten habe?
SELECT
CASE
WHEN (re.nixmehroffen = 1 ) THEN 'A'
WHEN (re.rueckgaengiggemacht= 1 ) THEN 'A'
WHEN (re.gedruckt = 0) THEN 'A'
ELSE
curdate() - ADDDATE(re.datum , INTERVAL re.faellig DAY)
END
FROM ...
soll entweder einen A-String oder die Tage seit der Fälligkeit ergeben.
Tobi
Moin,
SELECT
CASE
WHEN (re.nixmehroffen = 1 ) THEN 'A'
WHEN (re.rueckgaengiggemacht= 1 ) THEN 'A'
WHEN (re.gedruckt = 0) THEN 'A'
ELSE
curdate() - ADDDATE(re.datum , INTERVAL re.faellig DAY)
END
FROM ...
Es gibt bei MySQL die Funktion DATEDIFF() :
`SELECT DATEDIFF(curdate(), ADDDATE(re.datum, INTERVAL re.faellig DAY))`{:.language-sql}
Das liegt IMHO daran, dass MySQL das Datumsformat 'YYYY-MM-DD' nicht addieren oder subtrahieren kann. Es versucht daher so wie ich das sehe, beides nach INT zu casten...
Grüße Marco
--
Ich spreche Spaghetticode - fließend.
Es gibt bei MySQL die Funktion DATEDIFF() :
SELECT DATEDIFF(curdate(), ADDDATE(re.datum, INTERVAL re.faellig DAY))
Das liegt IMHO daran, dass MySQL das Datumsformat 'YYYY-MM-DD' nicht addieren oder subtrahieren kann. Es versucht daher so wie ich das sehe, beides nach INT zu casten...
Hi Marco,
ja. Mit DATEDIFF läufts vorzüglich. Danke.
Tobi
Tach!
mach ich etwas falsch? Weil ich grade eben 2-3 unsinnige Ergebnisse erhalten habe?
Ich kann nichts entdecken. Mir fehlen zum Nachvollziehen aber auch Beispieldaten und eine Aussage zum Feldtyp von re.datum und re.faellig.
dedlfix.
Tach!
Ich kann nichts entdecken.
Siehe misterunknowns Antwort. Ich hab in dem Fall MySQL zu viel Intelligenz zugetraut. Ein Test mit
SELECT CURDATE() - ADDDATE('2013-07-25', INTERVAL 1 DAY)
brachte das erwartete Ergebnis. Aber nun nochmal mit einen Monat vorher probiert, ergab 103 Tage, mit DATEDIFF() jedoch 33.
dedlfix.