2009-05-08 8 views
1
DECLARE @DateNow smalldatetime 
SET @DateNow='12:30' 
select @DateNow 
-------------------------------------OR-------------------------------------- 
select CAST('12:30' as datetime)


Wie konvertiert man Nvarchar in Zeit, nicht Datetime?


Ergebnis: 1900-01-01 12: 30: 00.000 (i dies nicht will)


Aber ich brauche dieses Ergebnis im Zeitformat nicht Zeichenfolge nicht Datetime?

Ergebnis: 0.30 (i dies wünschen)

+0

Es gibt keinen Datentyp in SQL Server, der nur den Zeitteil eines Datums enthält. Was versuchst du zu erreichen? –

+0

@ykaratoprak - bitte sehen Sie sich meine Antwort an und lassen Sie mich wissen, ob das für Sie funktioniert. –

+0

Wie haben Sie das gelöst? scheint, als hätte die Frage nicht die gewünschte Antwort gefunden. Jeder postet, dass die Zeit veraltet ist. Niemand hat den "String in Zeit oder Datetime konvertieren" Teil adressiert :) – wingskush

Antwort

1

können Sie verwenden, um die CONVERT Funktion.

Übrigens gibt es in SQL Server keinen "TIME" -Datentyp. Das konvertierte Ergebnis ist also immer ein STRING.

EDIT: Es gibt keinen "TIME" Datentyp in SQL Server-Versionen < SQL Server 2008.

7

Es gibt einen TIME Typen in SQL Server 2008, aber in früheren Versionen, können Sie es als varchar für die Anzeige darstellen.

So können Sie den Zeitabschnitt eines DATETIME-Felds im gewünschten Format abrufen.

DECLARE @DateNow smalldatetime 
SET @DateNow = GETDATE() -- 2009-05-08 12:58:02.680 

SELECT CONVERT(CHAR(5), @DateNow, 8) 
-- this returns the time portion as 12:58 
+0

Beat mich um ein paar Sekunden +1 – ichiban

+0

Hmmm. Wusste nicht, dass :) +1 – Kirtan

+0

+1 eine andere Antwort geschrieben, um Ihre Char (5) Trick im Detail zu erklären :) – Andomar

0

Wenn Sie vergleichen müssen, addieren und/oder Zeit subtrahieren (nur) Wert, denkt über die Möglichkeit, einen INT zu verwenden, um den „TIME“ Wert zu speichern und dann konvertieren in CHAR bei der Anzeige das Ergebnis.

6

Wie José sagte, können Sie CONVERT verwenden, um ein Datum als Datum anzuzeigen. MSDN hat eine Liste aller possible formats. Zum Beispiel im Format 8 ist hh: mi: ss:

select convert(varchar(32),getdate(),8) 
12:51:21 

Jetzt können Sie die Sekunden aus durch die Angabe weniger Zeichen geschnitten:

select convert(varchar(5),getdate(),8) 
12:51 

Ein weiteres häufig verwendetes Format ist 121, yyyy-mm-dd hh: mi: ss.mmm (24h):

select convert(varchar(32),getdate(),121) 
2009-05-08 12:51:21.987 

Wo Sie die Zeit Teil wie wählen können:

select substring(convert(varchar(32),getdate(),121),12,5) 
12:51 

Oder die Zeichenfolge Gaunereien zu kombinieren:

select right(convert(varchar(16),getdate(),121),5) 
12:51 

Recht? Recht!

+0

Rechts zurück bei Ihnen +1 –

Verwandte Themen