![]() |
Datenbank: mySql • Version: 5 • Zugriff über: Zeos
SQL: Informationen aus einem Datum auslesen
Hallo nochmal!
Habe in einer Tabelle mit dem Namen "provisionen" unter anderem ein Datumsfeld und dort möchte ich auslesen, welche Monate und Jahre es gibt in der Tabelle.
SQL-Code:
Damit bekomme ich folgendes Ergebnis:
SELECT DISTINCT(EXTRACT(YEAR_MONTH FROM pr.datum))
FROM provisionen pr "200610" Also Oktober 2006, ist ja richtig. Möchte aber das Jahr in einer Spalte und den Monat in einer andere getrennt anzeigen lassen, das ist das Problem. Wenn ich folgendes tu
SQL-Code:
um nur das Jahr in einer Spalte anzeigen zu lassen, gibt es einen Fehler. Schätze mal die LEFT-Anweisung geht nicht bei einer DISTINCT-Anweisung.
SELECT LEFT(DISTINCT(EXTRACT(YEAR_MONTH FROM pr.datum)), 4)
FROM provisionen pr Für eure Hilfe wäre ich natürlich wieder seeehr dankbar! :thumb: |
Re: SQL: Informationen aus einem Datum auslesen
Versuchs mal mit
SQL-Code:
bzw
EXTRACT(YEAR FROM pr.datum)
SQL-Code:
EXTRACT(MONTH FROM pr.datum)
|
Re: SQL: Informationen aus einem Datum auslesen
Hallo,
warum nicht mit SELECT DISTINCT(EXTRACT(YEAR FROM pr.datum)) FROM provisionen pr okay, hab kein mySQL zur Verfügung. Könnte es eventuell so aussehen: Select distinct EXTRACT(YEAR FROM pr.datum) As Jahr, EXTRACT(MONTH FROM pr.datum) As Monat FROM provisionen pr Was passiert hier? Es werden für alle Zeilen Jahr und Monat gesammelt und dann per Distinct Duplikate "weggeworfen". Damit dürfte Left... dann entfallen. Stephan |
Re: SQL: Informationen aus einem Datum auslesen
Danke,
es hat funktioniert Habe es nun mit
SQL-Code:
gelöst, wie du sagtest. Aber wenn ich das DISTINCT vor das Jahr schreibe, dürfte dann ein Jahr nicht nur einmal erscheinen?
SELECT DISTINCT(EXTRACT(YEAR FROM pr.datum)), EXTRACT(MONTH FROM pr.datum)
FROM provisionen pr Aber du hast Recht, nun sehe ich alle Monate, die es in 2006, in 2005 usw...gibt. Also ich verstehe nicht, warum das DISTINCT hier alle überflüssigen Kombinationen aus Jahr und Datum wegwirft, obwohl es nur vor dem Jahr steht... :gruebel: |
Re: SQL: Informationen aus einem Datum auslesen
Zitat:
SQL-Code:
WHERE
|
Re: SQL: Informationen aus einem Datum auslesen
Hallo,
das Problem mit dem Distinct: Die Syntax mit Distinct(...) finde ich gewöhnungsbedürftig, hab' sie so noch bei keiner anderen Datenbank gesehen. Eigentlich bezieht sich das Distinct auf die gesamte Zeile und nicht nur auf den Wert einer einzelnen Spalte. Für meine Begriffe dürfte die Datenbank in etwa folgendermaßen vorgehen: Hole alle Zeilen, die der genannten Bedingung entsprechen (Select). Entferne alle Duplikate aus der Ergebnismenge (Distinct). Eventuell kann man sich das so vorstellen:
SQL-Code:
Zuerst wird das Select in den Klammern ausgeführt und über das Ergebnis wird ein zweites Select ausgeführt, das die Duplikate entfernt.
Select Distinct * from
( select spalte1, spalte2, ... from Tabelle where x = y ) Eine Alternative wäre auch
SQL-Code:
Hier dürfte das gleiche Ergebnis bei herauskommen.
select spalte1, spalte2, ... from Tabelle where x = y group by spalte1, spalte2, ...
Stephan |
Re: SQL: Informationen aus einem Datum auslesen
MySQL unterstützt m.W. keine Derived Tables:
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:29 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz