Sql, greift where auf spalte oder select zu?

3 Antworten

Du kannst der umgewandelten Spalte auch einen Namen geben und mit diesem dann arbeiten:

SELECT spalte1, CONVERT_TZ(`Datum_spalte`, '+02:00', 'UTC') AS Datum_converted FROM meineTabele WHERE Datum_converted = "…"
Woher ich das weiß:Berufserfahrung – Entwickle seit > 20 Jahren Anwendungen mit PHP.

Ich hab es grade mit mySQL und MS SQL-Server getestet. Die können beide nur die erste Variante.

Was aber zumindest bei mySQL funktioniert: Wenn du Spalten gruppierst, kannst du im "Having"-Abschnitt den selbst benannten Spaltennamen benutzen, also z.B. sowas:

SELECT COUNT(spalte1) AS Anzahl, CONVERT_TZ(`Datum_spalte`, '+02:00', 'UTC') AS Konvertiertes_Datum
FROM meineTabelle
GROUP BY Konvertiertes_Datum
HAVING Konvertiertes_Datum = '2022-12-24'

Das geht auch ohne Gruppierung, allerdings läuft das natürlich langsamer, als wenn du die Abfrage mit WHERE machst, weil er so erstmal eine ganze Ergebnistabelle aufbaut und erst nachträglich mit "HAVING" den Teil rausfiltert, den du sehen willst.

Du musst beim WHERE auch konvertieren

Könnte doch sein, du suchst ein bestimmtes Datum, willst aber den Wochentag als Ausgabe.