MySQL CAS énoncés à l'aide de dates

Je suis en train d'utiliser une instruction de CAS dans une requête SQL que j'ai et il ne fonctionne pas de la façon dont je pensais que ça ferait.

En gros, j'ai trois scénarios-je besoin pour accomplir, à l'aide d'un champ de date, donc par exemple, j'ai les données suivantes:

id | date_activated
1  | 2011-10-10 07:00:06
2  | 2011-03-12 10:00:00
3  | 2011-11-27 18:10:36
4  | 2010-01-25 14:30:43
5  | 0000-00-00 00:00:00

à l'aide de l'instruction SQL suivante:

select id,
case date_activated
when date_activated > '2011-11-23 18:30:00' then 'after'
when date_activated > '2010-01-20 00:00:00' then 'before'
else 'not yet'
end as date_note
from table1

devrait permettre de:

id | date_activated       | date_note
1  | 2011-10-10 07:00:06  | before
2  | 2011-03-12 10:00:00  | before
3  | 2011-11-27 18:10:36  | after
4  | 2010-01-25 14:30:43  | before
5  | 0000-00-00 00:00:00  | not yet

Cependant, c'est en tirant:

id | date_activated       | date_note
1  | 2011-10-10 07:00:06  | not yet
2  | 2011-03-12 10:00:00  | not yet
3  | 2011-11-27 18:10:36  | not yet
4  | 2010-01-25 14:30:43  | not yet
5  | 0000-00-00 00:00:00  | after

Je ne peux pas comprendre ce que je fais mal, mais je parie que c'est quelque chose de simple!

est date_activated un véritable champ datetime, ou est-ce char/varchar?
c'est un vrai champ datetime

OriginalL'auteur Jo H | 2011-11-28