2016-07-12 9 views
0

Ich versuche, meine TIMESTAMP in eine Zeichenfolge zu konvertieren, die das Geschäftsjahr z. mein Hier MYSQL Case Wenn es einfach nicht funktioniert

wird folgende Erklärung April bis

März:

SELECT Year, Type 
CASE 
WHEN date_format(SubmissionDate, '%Y')='2015' AND MONTH(SubmissionDate) 
BETWEEN 4 AND 12 THEN '15-16' 
WHEN date_format(SubmissionDate, '%Y')='2016' AND MONTH(SubmissionDate) 
BETWEEN 1 AND 3 THEN '15-16' 
END as Year 
FROM Incidents 

Offensichtlich nicht ... Ich wusste, hübsch, wenn es darum geht, Aussagen zu Fall bin ich irgendwo in der Nähe?

+1

wo ist Komma nach 'Baumuster zur? – 1000111

+0

Ihr absolut richtig!, Vielen Dank an euch beiden, dass ihr darauf hingewiesen habt! .. Ich werde das nächste Mal genauer prüfen! – memaxt

+1

Bitte markieren Sie die Antwort als ** AKZEPTIERT **, damit andere das Problem ** gelöst ** finden. – 1000111

Antwort

1

Sie verpasst haben eine , nach Type:

SELECT Year, Type, 
CASE 
WHEN date_format(SubmissionDate, '%Y')='2015' AND MONTH(SubmissionDate) 
BETWEEN 4 AND 12 THEN '15-16' 
WHEN date_format(SubmissionDate, '%Y')='2016' AND MONTH(SubmissionDate) 
BETWEEN 1 AND 3 THEN '15-16' 
END as Year 
FROM Incidents 
+0

Entschuldigung! gut das ist ein bisschen peinlich! vielen dank für ihre hilfe! ... funktioniert jetzt einwandfrei. – memaxt

0

Ich bin neugierig, warum Sie Funktionen wie folgt mischen würde. Warum nicht:

SELECT Year, Type, 
     (CASE WHEN YEAR(SubmissionDate) = 2015 AND MONTH(SubmissionDate) BETWEEN 4 AND 12 
      THEN '15-16' 
      WHEN YEAR(SubmissionDate) = 2016 AND MONTH(SubmissionDate) BETWEEN 1 AND 3 
      THEN '15-16' 
     END) as Year 
FROM Incidents; 

Oder noch einfacher:

SELECT Year, Type, 
     (CASE WHEN YEAR(DATE_SUB(SubmissionDate, INTERVAL 3 MONTH)) = 2015 
      THEN '15-16' 
     END) as Year 
FROM Incidents;