Temat: Porównywanie dat podczas użycia SELECT CASE

Witam wszystkich!

Używam MySQL.
Porównuję daty.
Wszystko działa dobrze, gdy porównanie odbywa się w klauzuli WHERE.
Podczas porównywania dat przy użyciu polecenia CASE, otrzymuję wyniki, jakby
serwer SQL wogóle porównania dat nie wykonywał.
Nie mogę więc użyć SELECT CASE, gdzie przy użyciu CASE porównuje się daty.
Nie wiem dlaczego.
Czy miał ktoś podobną sytuację, a może ja gdzies popełniłem błąd ?
Poniżej zapytania, których używam:

1. Zapytanie, gdzie porównywanie dat działa:
SELECT id, DATE_FORMAT(data, '%Y-%m') AS 'data'
FROM tab
WHERE DATE_FORMAT(data, '%Y-%m') BETWEEN '2012-01' AND '2012-12'

2. Zapytanie, gdzie porównywanie dat nie działa:
SELECT id, DATE_FORMAT(data, '%Y-%m') AS 'data', CASE DATE_FORMAT(data, '%Y-%m')
WHEN DATE_FORMAT(data, '%Y-%m') > '2012-07' THEN 'nowe'
WHEN DATE_FORMAT(data, '%Y-%m') BETWEEN '2011-07' AND '2012-07' THEN 'stare'
ELSE 'inne'
END
AS 'wiek'
FROM tab
//Wynikiem zawsze jest 'inne' co nie jest zgodne z prawdą.

Temat: Porównywanie dat podczas użycia SELECT CASE

sprawdź:
CASE
WHEN DATE_FORMAT(data, '%Y-%m') > '2012-07' THEN 'nowe'
WHEN DATE_FORMAT(data, '%Y-%m') BETWEEN '2011-07' AND '2012-07' THEN 'stare'
ELSE 'inne'
END

w twojej składni wychodzi na to, że porównujesz DATE_FORMAT(data, '%Y-%m') z wartościami logicznymi

Temat: Porównywanie dat podczas użycia SELECT CASE

Działa :)
DZIĘKI.

Następna dyskusja:

Baza dat




Wyślij zaproszenie do