none
Verständnisfrage zu SQL Ausgabe RRS feed

  • Frage

  • Hallo ich hätte da mal eine Verständnisfrage. Anbei meine SQL Abfrage. Mein Ziel ist es einen Timestamp so zu zerlegen das ich den für ein anderes DBMS nutzen kann. Ziel ist folgende Form DMMYYYY

    Dies ist mir auch mit diesen Select gelungen.

     

    select       str(day(getdate()))
          +
          case 
    		when LEN(MONTH(getdate()))=2 then
    			STR(MONTH(getdate()))
    		when LEN(MONTH(getdate()))=1 then
    			STR(0)+STR(MONTH(getdate()))	
    		END	
    	+str(year(getdate())) 			
    		as test
    		from Testdatenbank
    Jedoch steht in der Ausgabe stets :"          6         0         6      2016" sprich es sieht so aus als ob viele Leerzeichen drin wären. Auch Trim konnte diese Ansicht nicht verbessern. Muss ich mir jetzt Sorgen machen oder ist die Darstellung richtig? Wenn ja woher kommt das Phänomen? 

    Montag, 6. Juni 2016 08:59

Alle Antworten

  • Hallo,

    die STR (Transact-SQL) Funktion ist dafür ausgelegt, Fließpunktzahlen zu formatieren und das mit führenden Leerzeichen; man kann bei der Funktion auch die gewünscht Gesamtlänge angeben und im Standard sind das 10 Zeichen.

    Nimm besser die CONVERT oder CAST Funktion zum Umwandeln in einen String.


    Olaf Helper

    [ Blog] [ Xing] [ MVP]

    Montag, 6. Juni 2016 09:15
  • Komm, wir basteln uns ein Datum! ;)

    MCTS (70-642), MCP Please click the "Mark as Answer" or "Vote As Helpful button" if a post solves your problem or is helpful! Bitte klicke auf "Als Antwort vorschlagen" oder "Als hilfreich bewerten", wenn mein Beitrag Dein Problem löst oder hilfreich ist.

    Montag, 6. Juni 2016 09:37
  • Hallo Toot,

    via CONVERT geht es u. a. so:

    SELECT REPLACE(CONVERT(varchar(10), GETDATE(), 104), '.', '')

    Wobei die meisten RDBMS Systeme auch das ISO 8601 Format verstehen, was man u. a. über CONVERT(..., 126) erhält, womit ein REPLACE oder STR und Verkettung entfallen können.

    Gruß Elmar

    Montag, 6. Juni 2016 10:46