sql Stunde veraltet, ohne die führende Null in einstelligen Stunden zu verlieren

7
%Vor%

Das wird mir die Stunde aus einem Zeitstempelfeld holen, aber im Fall der Stunden 0-9 wird keine führende Null aufgefüllt, und daher sortiere ich nicht nach Stunden, wenn ich nach Stunden sortiere.

Ich bin mir nicht sicher, was hier falsch ist. Ich gebe ein 2 char varchar an, um zusätzlichen Platz für die führende Null zu ermöglichen. Hoffentlich gibt es eine Möglichkeit, dies zu beheben, ohne mein Feld durch eine Funktion zu führen, die die führende Null für mich auffüllen wird.

    
TWood 16.02.2012, 15:06
quelle

3 Antworten

16
%Vor%

Ich möchte nicht mit 0s padeln? OK, Sie können es auf eine ähnlich hässliche Art und Weise ohne das Padding Chaos machen:

%Vor%

Offensichtlich ersetzen Sie GETDATE() durch Ihren Spaltennamen. Was hoffentlich nicht wirklich timestamp ist, denn das ist ein reserviertes Wort - für einen Datentyp, der leider mit Datum oder Uhrzeit nichts zu tun hat.

Wenn Ihnen eine dieser Lösungen nicht gefällt, wählen Sie einfach die Daten aus SQL Server aus, und lassen Sie Ihre Clientanwendung Formatierungs- / Präsentationsdetails verarbeiten. Das ist zum Beispiel mit der Funktion format() von C # ganz einfach möglich.

    
Aaron Bertrand 16.02.2012, 15:09
quelle
3

Angenommen, der Zeitstempel ist eine Spalte in Ihrer Tabelle

%Vor%

Alternative

%Vor%

Bearbeiten:

Nachdem ich ein bisschen getestet habe, bin ich zu dem Schluss gekommen, dass dies der schnellste Weg ist (fast die Performance und Syntax wie Aarons Lösung)

%Vor%     
t-clausen.dk 16.02.2012 15:11
quelle
2

Sie können den TIME-Typ verwenden, der standardmäßig 24 Stunden lang ist;

%Vor%     
Alex K. 16.02.2012 15:12
quelle