Abfrage CONVERT(): Datum umwandeln...
Krull
- datenbank
Hallo zusammen, ich bins mal wieder mit meinem Problem.
Ich habe ja mitlerweile schonmal den Tip bekommen mir was zur Funktion:
CONVERT()
das innerhalb der Abfrage steht herauszusuchen.
Gefunden habe ich:
CONVERT(data_type[ (length)], expression [,style])
das muss ja nun mit in die Abfrage.
also
SELECT * FROM [wickel_db].[dbo].[data] CONVERT(data_type[ (length)], expression [,style]) ORDER BY [Datum]
Was muss ich jetzt aber als "data_type" , "length" , "expression" eintragen.
Ich habe schon so einiges ausprobiert aber nichts hat funktioniert.
Habe auch nichts weiter darüber gefunden.
Für "style" würde in meinem fall ja die "104" (dd.mm.YYYY) in Frage kommen.
Aber was ist nun mit den anderen Sachen?
MfG
Krull
Hello,
SELECT * FROM [wickel_db].[dbo].[data] CONVERT(data_type[ (length)], expression [,style]) ORDER BY [Datum]
huch, was soll das denn sein?
CONVERT ist eine ganz normale Spaltenfunktion, sie muss entsprechend in den ersten Abschnitt der SELECT-Klausel, in die WHERE-Klausel, oder in die ORDER BY-Klausel, aber nicht in die FROM-Klausel.
Die genaue Syntax kannst dir da anschauen. Ich empfehle dort mal zu den Beispielen runterzuscrollen.
Für "style" würde in meinem fall ja die "104" (dd.mm.YYYY) in Frage kommen.
joa, wahrscheinlich ja.
MfG
Rouven
»»
SELECT * FROM [wickel_db].[dbo].[data] CONVERT(data_type[ (length)], expression [,style]) ORDER BY [Datum]
huch, was soll das denn sein?
dann ebend so:(oder was weiß ich)
SELECT * FROM [wickel_db].[dbo].[data] ORDER BY [Datum] CONVERT(data_type[ (length)], expression [,104)
Gut, gut.
Und nu?
Was kommt nun als: "data_type", "length" und "expression"?
Also die Spalte um die es geht: [Datum] Typ: date
Aktuelles Format: YYYY-mm-dd
Gewünschtes Format in der Ausgabe: dd.mm.YYYY
Sortierung in der Ausgabe nach: Jahr
Datenbank: MSSQL 2008 Express witz Tools
yo,
dann ebend so:(oder was weiß ich)
SELECT * FROM [wickel_db].[dbo].[data] ORDER BY [Datum] CONVERT(data_type[ (length)], expression [,104)
CONVERT in aller regel zum anzeigen (projektion), also hinter dem SELECT zum beispiel. bei der sortierung hast du ja schon den hinweis bekommen, dass du keine konvertierung verwenden musst, wenn es sich um einen entsprechenden Datentyp von datetime handelt, da es ja eh richtig formatiert wird.
SELECT CONVERT(DATETIME, datumsspalte, 104)
FROM tabelle
ORDER BY datumsspalte
;
so,
Das habe ich nun alles soweit eingebracht.
Die Abfrage läuft auch und so weiter.
Nur das ausgegebene Datumsformat ist immernoch das gleiche.
Also: YYYY.mm.dd
SELECT CONVERT(datetime, [Datum], 104) [Fabrikat], [Typ], [Motornummer], [Spannung], [Strom], [Leistung], [Drehzahl], [Frequenz], [Kaltleiter], [Thermofühler], [Nuten], [Blechpaketdurchmesser], [Blechpaketlänge], [Spulenmaß], [Windungen], [Drahtdurchmesser], [Wickelschritt], [Schaltung], [Wickelzeit], [Bemerkung], [Datum], [Auftragsnummer], [Kunde], [Ort], [Gegenstand], [Wickler] FROM [wickel_db].[dbo].[data] ORDER BY [Datum]";
Also ums deutlich zu sagen:
Es ist im Moment egal ob ich CONVERT() drin hab oder nicht.
ARRG! Hilfe!
Hello,
SELECT CONVERT(datetime, [Datum], 104) [Fabrikat], [Typ]
je mehr ich drüber nachdenke, umso mehr halte ich CONVERT(datetime,... für ein mögliches Problem. Das Ergebnis deiner Abfrage ist somit wiederum ein Datumstyp, vieleicht wird er entsprechend wieder in Ausgangslage formatiert. Versuch mal, daraus eine Zeichenfolge zu machen, also VARCHAR oder CHAR(10) oder sowas.
MfG
Rouven
Hello,
»»
SELECT CONVERT(datetime, [Datum], 104) [Fabrikat], [Typ]
Versuch mal, daraus eine Zeichenfolge zu machen, also VARCHAR oder CHAR(10) oder sowas.
Das war ein Satz mit X ... Das war wohl nix.
Wenn ich nun z.B. das hier draus mache:
"SELECT [Fabrikat], [Typ], [Motornummer], [Spannung], [Strom], [Leistung], [Drehzahl], [Frequenz], [Kaltleiter], [Thermofühler], [Nuten], [Blechpaketdurchmesser], [Blechpaketlänge], [Spulenmaß], [Windungen], [Drahtdurchmesser], [Wickelschritt], [Schaltung], [Wickelzeit], [Bemerkung], CONVERT(varchar, Datum, 104) [Datum], [Auftragsnummer], [Kunde], [Ort], [Gegenstand], [Wickler] FROM [wickel_db].[dbo].[data] ORDER BY [Datum]";
Dann macht er zwar das draus was ich haben will, aber er sortiert das dann wieder nach Tag und nicht nach Jahr.
Nun gehen wir mal hiervon aus:
"SELECT [Fabrikat], [Typ], [Motornummer], [Spannung], [Strom], [Leistung], [Drehzahl], [Frequenz], [Kaltleiter], [Thermofühler], [Nuten], [Blechpaketdurchmesser], [Blechpaketlänge], [Spulenmaß], [Windungen], [Drahtdurchmesser], [Wickelschritt], [Schaltung], [Wickelzeit], [Bemerkung], CONVERT(date, Datum, 104) [Datum], [Auftragsnummer], [Kunde], [Ort], [Gegenstand], [Wickler] FROM [wickel_db].[dbo].[data] ORDER BY [Datum]";
Alles schön und gut, er übernimmt aber nicht das "style" Argument!!
Hello,
"SELECT [Fabrikat], [Typ], [Motornummer], [Spannung], [Strom], [Leistung], [Drehzahl], [Frequenz], [Kaltleiter], [Thermofühler], [Nuten], [Blechpaketdurchmesser], [Blechpaketlänge], [Spulenmaß], [Windungen], [Drahtdurchmesser], [Wickelschritt], [Schaltung], [Wickelzeit], [Bemerkung], CONVERT(varchar, Datum, 104) [Datum], [Auftragsnummer], [Kunde], [Ort], [Gegenstand], [Wickler] FROM [wickel_db].[dbo].[data] ORDER BY [Datum]";
Dann macht er zwar das draus was ich haben will, aber er sortiert das dann wieder nach Tag und nicht nach Jahr.
und das wundert dich? Du fomatierst das Datum um auf dd.mm.yyyy, benennst die Spalte "Datum" und sortierst danach.
Das ist nicht das was du möchtest. Sortieren möchtest du entweder nach dem Originalwert (der dir hier derzeit nicht mehr zur Verfügung steht), oder eben nach YEAR(datum), sofern es die YEAR-Funktion in MS-SQL gibt.
MfG
Rouven
oder eben nach YEAR(datum), sofern es die YEAR-Funktion in MS-SQL gibt.
...ORDER BY YEAR([Datum])
funzt wunderbar.
ab jetzt auch noch:
...ORDER BY MONTH([Datum]) AND YEAR([Datum]
funzt? Mal probieren.
Hello,
...
ORDER BY MONTH([Datum]) AND YEAR([Datum]
ui, das würde mich syntaktisch wundern. Ich dachte gerade mal kurzfristig über eine Sortierung nach dem String bestehend aus beiden Feldern nach, die scheitert aber daran, dass die Sortierung dann 12009, 102009, 112009, 122009, 22009 lauten würde.
Ich gebe jedoch zu bedenken, dass es dein DBMS unter bestimmten Umständen angenehmer findet direkt nach dem Ausgangswert zu sortieren - du könntest also in deinem SELECT einfach das Originaldatum mit einem anderen Alias nochmal unterbringen und dann nach dieser Spalte sortieren.
MfG
Rouven
yo,
Dann macht er zwar das draus was ich haben will, aber er sortiert das dann wieder nach Tag und nicht nach Jahr.
das ist so nicht ganz richtig, sicherlich sortiert er "genauer" auch nach den tagen und monaten, aber er sortiert auch nach den jahren.
Ilja
Hello,
ich schreibe mal ins Unreine, von wegen kein SQL_Server verfügbar.
Also die Spalte um die es geht: [Datum] Typ: date
hervorragend! damit kann man arbeiten!
Aktuelles Format: YYYY-mm-dd
okay
Gewünschtes Format in der Ausgabe: dd.mm.YYYY
gut, dann selektiere die Spalte entsprechend - du willst einen Text rausbekommen, oder ein Datum, wie auch immer
CONVERT(date, datum, 104)
CONVERT(varchar, datum, 104)
sprich:
ich hätte gerne "datum" als "date" oder "varchar" und als Format verwende 104.
Sortierung in der Ausgabe nach: Jahr
ah, na das ist ja was anderes. Da bist du doch mit der yyyy-mm-dd-Schreibweise schon gut bedient. Ganz explizit müsstest du auch eine Funktion wie YEAR auf deine Datumsspalte anwenden können...
MfG
Rouven