Abfrage mit php; Ausgabe sortieren nach Jahr aus Spalte [Datum]
Krull
- datenbank
0 hotti0 Krull0 Sven Rautenberg
0 Ilja0 Bademeister0 Bobby0 Krull0 Bobby
Hallo zusammen.
Habe folgendes Problem in der Sortierung einer Datenbank abfrage.
Ich möchte den kompletten Inhalt einer Tabelle anzeigen lassen und das ganze soll nach dem im Datum angegebenen Jahr sortiert werden.
Bisher: "SELECT * FROM //tabelle// ORDER BY [Datum]";
Die gesamte Ausgabe der Tabelle funktionier einwandfrei, nur das alles nach dem Tag sortiert wird.
Datumsformat in Tabelle: dd.mm.YYYY
Die gesamte Ausgabe soll nun nach Jahr (YYYY) sortiert werden.
Kann mir bitte jemand einen Tip geben???
Verwendete Datenbank:
MSSQL 2008 Express with Tools
hi,
Die gesamte Ausgabe soll nun nach Jahr (YYYY) sortiert werden.
Kann mir bitte jemand einen Tip geben???
Stringfunktionen und GROUP BY...
Hotte
Stringfunktionen und GROUP BY...
-.-
Einen etwas größeren Tip bitte?
Hab da nicht so die mörder mäßige Ahnung von.
Moin!
»» Die gesamte Ausgabe soll nun nach Jahr (YYYY) sortiert werden.
»»
»» Kann mir bitte jemand einen Tip geben???Stringfunktionen und GROUP BY...
Stringfunktionen sind für Datumsoperationen falsch, und GROUP BY für Sortieroperationen.
- Sven Rautenberg
Moin;
Stringfunktionen sind für Datumsoperationen falsch,
Datumsoperationen funktionieren nur mit dem richtigen Feldtyp der einer Datumsangabe lt. DBMS entspricht.
Liegt das Datum jedoch als String vor (wie in der Aufgabenstellung, s.o.: varchar...), nimm eine Stringfunktion.
Hotte
yo,
Liegt das Datum jedoch als String vor (wie in der Aufgabenstellung, s.o.: varchar...), nimm eine Stringfunktion.
mal davon abgesehen, das es wohl beser ist, den string in einen datumstyp zu wandeln, was hat das ganze mit GROUP BY zu tun, wenn man nur sortieren will ?
Ilja
yo,
Ich möchte den kompletten Inhalt einer Tabelle anzeigen lassen und das ganze soll nach dem im Datum angegebenen Jahr sortiert werden.
ich hoffe, der typ die spalte liegt auch als datumstyp vor. dann bietet dir jedes dbms geeignete datumsfunktionen, um das jahr zu extrahieren und danach zu sortieren. in deinem falle ist es meiner achtes nach CONVERT aber schau dir das noch mal in der doku an.
Ilja
wobei ich mich erinere, mssql sollte die funktion YEAR() auch kennen....
wobei ich mich erinere, mssql sollte die funktion YEAR() auch kennen....
emm ja.
Ich seh gerade nur gaaanz viele Fragezeichen vor meinen Augen :-)
Hi Krull,
Bisher: "SELECT * FROM //tabelle// ORDER BY [Datum]";
Wenn Du nach dem Datum sortierst, sind die Eintraege dann nicht insbesondere nach dem Jahr sortiert?
viele Gruesse
der Bademeister
»» Bisher: "SELECT * FROM //tabelle// ORDER BY [Datum]";
Wenn Du nach dem Datum sortierst, sind die Eintraege dann nicht insbesondere nach dem Jahr sortiert?
Nee der sortiert nach Tag nichr nach Jahr ...
Ich muss allerdings dazu sagen, dass die Spalte [Datum] als varchar(MAX) konfiguriert ist.
yo,
Ich muss allerdings dazu sagen, dass die Spalte [Datum] als varchar(MAX) konfiguriert ist.
und das dann ganz schnell wieder ändern und einen datumstyp nehmen !
Ilja
und das dann ganz schnell wieder ändern und einen datumstyp nehmen !
'data'-Tabelle
Geht nicht. Warum auch immer.
Datumsformat soll aber !dd.mm.yyyy! bleiben!
Moin
Datumsformat soll aber !dd.mm.yyyy! bleiben!
Warum? Warum verwendest du nicht das internationale Datumsformat YYYY-MM-DD und wandelst es bei der Ausgabe in dein gewünschtes Format um?
Dir entstehen nur NAchteile wenn du ein Datum NICHT als Datum behandelst. Das würde ich mir an deiner Stelle genau überlegen!
Gruß Bobby
Warum? Warum verwendest du nicht das internationale Datumsformat YYYY-MM-DD und wandelst es bei der Ausgabe in dein gewünschtes Format um?
Gut. Hab ich.
Aber wie wandele ich es jetzt in der Ausgabe wieder in dd.mm.yyy?
Moin
mit den PHP-Funktionen date() und strtotime()
strtime() macht einen Unix timestamp und date() wandelt diesen timestring in dein gewünschtes Format um.
Gruß Bobby
Moin
Ergänzung:
das geht auch sicher einfacher direkt bei der SQL-Abfrage. Das weiß aber nicht genau.
Ich glaube: SELECT DATE_FORMAT(Datumsspalte
),GET_FORMAT(DATE,'EUR')) odre sowas
Genau weiß ichs nicht. Hat da jemand einen Tipp?
Gruß Bobby
Moin
Ich glaube: SELECT DATE_FORMAT(
Datumsspalte
),GET_FORMAT(DATE,'EUR'))
sorry, das muss natürlich heißen:
SELECT DATE_FORMAT(
Datumsspalte,GET_FORMAT(DATE,'EUR'))
Gruß Bobby
Genau weiß ichs nicht. Hat da jemand einen Tipp?
Ja: Einfach kurz nachlesen.
viele Gruesse
der Bademeister
Moin!
»» Genau weiß ichs nicht. Hat da jemand einen Tipp?
Ja: Einfach kurz nachlesen.
Genauer hingucken ins Ausgangsposting:
"Verwendete Datenbank:
MSSQL 2008 Express with Tools"
Nix MySQL!
- Sven Rautenberg
Hi Sven,
Genauer hingucken ins Ausgangsposting:
Auch ein guter Tipp, danke ;-)
date_format gibts gar nicht im MSSQL, oder? Damit war hier so einiges in diesem Thread etwas off topic.
Danke für den Hinweis.
viele Grüße
der Bademeister
yo,
Aber wie wandele ich es jetzt in der Ausgabe wieder in dd.mm.yyy?
hast du dir wie bereits erwähnt mal die Funktionen CONVERT() und diverse andere datumsfunktionen in deiner MSSQL hilfe angeschaut ?
Ilja
Nee der sortiert nach Tag nichr nach Jahr ...
Ich muss allerdings dazu sagen, dass die Spalte [Datum] als varchar(MAX) konfiguriert ist.
Dann empfehle ich Dir dringendst, das Design der Datenbank so zu aendern, dass ein Datum, das Du speicherst, auch weiss, dass es ein Datum ist (bevor Du auf die Idee kommst, am Ende die Sortierung mit String-Funktionen zu realisieren).
viele Gruesse
der Bademeister
Moin
Bisher: "SELECT * FROM //tabelle// ORDER BY [Datum]";
Spalte Datum als Datumsformat konfigurieren, und dann funktioniert das auch mit dem Sort wie du es beschrieben hast! Verwende immer den vorgesehenen Datentyp in der Datenbank. So kannst du z.B. direkt in der DB mit Datum rechnen.
Gruß Bobby
nochmal mehr Info´s:
Spalte [Datum]: varchar(MAX) und lässt sich nicht (warum auch immer) in (date) oder ähnliches ändern!
Datumsformat: dd.mm.yyyy
Sortierung nach: Jahr (yyyy)
Moin
Datenformat Date in MySQL sieht folgendermaßen aus: YYYY-MM-DD
wandel deine Datumsangaben bitte in dieses gültige Format um. Dann funktioniert das auch mit der Typänderung.
Gruß Bobby