Zugriff auf berechnete Datumsspalte in WHERE Klausel

Thorsten Kück toddy69 at gmx.de
Di Mär 16 13:55:50 CET 2010


In response to Tim :
> Hallo liebe Liste,
> 
> ich habe derzeit das Problem, dass ich in einer WHERE-Klausel nicht
auf
> eine Spalte zugreifen kann, die von MySQL zur Laufzeit der Abfrage
erst
> errechnet wird:
> 
> SELECT S.datetime_from, S.datetime_to,
> 	IFNULL(DATE_ADD(S.datetime_to, INTERVAL -1 SECOND), 
> 	'0000-00-00 00:00:00') as datetime_to_enc
> FROM `stocks` S 
> WHERE datetime_to_enc >= '2010-03-18 14:59:59'

SELECT S.datetime_from, S.datetime_to,
 	IFNULL(DATE_ADD(S.datetime_to, INTERVAL -1 SECOND), 
 	'0000-00-00 00:00:00') as datetime_to_enc
FROM `stocks` S 
HAVING datetime_to_enc >= '2010-03-18 14:59:59'


ON, WHERE und HAVING machen alle mehr oder weniger das selbe, werden
allerdings an unterschiedlichen Stellen ausgewertet. In diesem Fall ist
die Auswertungsreihenfolge WHERE, Berechnung der neuen Spalte, HAVING.
WHERE kennt die Spalte also noch nicht, HAVING schon.