mysql if Abfrage?

wachteldonk

Erfahrenes Mitglied
Hallo,

ich möchte ein DATEDIFF erstellen mit

WHERE
DATEDIFF(t1.maaustritt,t1.maeintritt)/30 >= '".$zeitraum_von."'

Wenn maaustritt aber jetzt keinen Wert enthält, sondern nur 0000-00-00 würde ich gerne das aktuelle DAtum einsetzen. Wie geht sowas in mySQL?
 
Klar geht das:
Code:
DATEDIFF(IF(t1.maaustritt = '0000-00-00', CURDATE(), t1.maaustritt),t1.maeintritt)/30 …
Noch schöner (kürzer) wird es, wenn du nicht '0000-00-00', sondern NULL für ein unausgefülltes Feld verwendest:
Code:
DATEDIFF(IFNULL(t1.maaustritt, CURDATE()),t1.maeintritt)/30 …

Grüße,
Matthias
 
Sorry, ich komm nicht weiter. Alles was ich versucht habe , liefert kein Ergebnis



DATEDIFF (
'".$now."',
IF(t1.maeintritt_massnahme = '0000-00-00', maeintritt_massnahme, t1.maeintritt)
) AS datedifferenz,







Das funktioniert wurnderbar

DATEDIFF (
'".$now."',
maeintritt)
) AS datedifferenz,
 
Zuletzt bearbeitet:
Hallo,

hier mal die ganze Abfrage

$query = " SELECT
*,
DATEDIFF('".$now."',IF(t1.maeintritt_massnahme = '0000-00-00', t1.maeintritt_massnahme, t1.maeintritt)) AS datedifferenz,
/*DATEDIFF('".$now."',maeintritt) AS datedifferenz,*/
t1.maeintritt-'".$now."' AS zeitraum
FROM
03_00_mitarbeiter AS t1
WHERE
t1.maaustritt = '0000-00-00'
AND
/* DATEDIFF(IFNULL(t1.maeintritt_massnahme, maeintritt), maaustritt) = 80 */
/* DATEDIFF((IF(t1.maeintritt = '0000-00-00', t1.maeintritt_massnahme, t1.maeintritt)),t1.maaustritt) = 80 */
/* DATEDIFF(t1.maaustritt,IF(t1.maeintritt = '0000-00-00', maeintritt_massnahme, t1.maeintritt)) = 80 */
/* DATEDIFF(t1.maeintritt,t1.maaustritt) = 80 */
DATEDIFF('".$now."',maeintritt) = 80
";


Sobald ich statt des Wertes die if Abfrage einbaue liefert er nichts zurück
 
Hi
Ich glaube in deiner Abfrage stimmt sowieso was nicht:
SQL:
IF(t1.maeintritt_massnahme = '0000-00-00', t1.maeintritt_massnahme, t1.maeintritt))
wenn also t1.maeintritt_massnahme 0 ist, dann nimmt er t1.maeintritt_massnahme . Wenn dies nicht 0 ist nimmt er t1.maeintritt . Sollte dies nicht eher umgekehrt sein?


PS: mit 0 meine ich immer 0000-00-00

Und dann hier:
SQL:
WHERE 
t1.maaustritt = '0000-00-00' 
DATEDIFF((IF(t1.maeintritt = '0000-00-00', t1.maeintritt_massnahme, t1.maeintritt)),t1.maaustritt) = 80
Ich habe nun einfach mal eine IF Abfrage genommen..
Da maaustritt immer 0 ist kann die Differenz nie 80 sein (ausser ein Mitarbeiter arbeitet schon seit 80Tagen n. Chr. bei euch ^^)


Ich denke dein Query solltest du nochmals neu aufbauen :)

Gruss
 

Neue Beiträge

Zurück