2016-09-14 4 views
0

Ich versuche, eine einzelne ganze Zahl, die den Stundenwert darstellt, in eine Zeit zu konvertieren. Ich habe versucht, mit Guss aber wandelt den Wert in ein DatumSQL konvertieren single int in einen Zeitwert

cast(datepart(hh,tstart) as datetime) as test 

Ich habe auch versucht, es als eine Zeit des Gießens und die Umwandlung ist nicht erlaubt.

Die Zahlen mit denen ich arbeite sind 7.8.9.10.11.12.13, ..., 23, 0

Das Format Ich mag würde 7 bis 07.00 Uhr wird konvertieren, 23 bis 23.00 Uhr, etc

Danke

+1

Hinweis: Ihre aktuelle Besetzung wird eine Datumzeit zwischen '1900-01-01' zurückzukehren und ‚1900- 01-24 ', weil X zu datetime (wobei X ein int ist) addiert wird, fügt nur X Tage zu' 1900-01-01 'hinzu. Es gibt ein paar Optionen, die Sie haben, aber eine ist etwas wie 'CAST (DATEADD (STUNDE, DATEPART (HH, tstart), 0) AS TIME)' – ZLK

+0

das Format, das Sie geben, ist ein Ausgabeformat, und das ist varchar keine Zeit. also warum nicht einfach stringconcatenate Ihre int mit + ': 00'? – swe

Antwort

1

Es gibt viele Möglichkeiten, dass zu tun:

WITH table_name AS 
(
    SELECT * FROM (VALUES 
    (1),(2),(3),(10),(23) 
    ) T(H) 
) 
SELECT DATEADD(HOUR, H, 0) DateValue, 
     CONVERT(time, DATEADD(HOUR, H, 0)) TimeValue, 
     CONVERT(varchar(2), H)+':00' TextValue 
FROM table_name T1 

ich empfehlen würde Wert als TIME Datentyp zu speichern.

0

Sie können dies versuchen:

select cast(dateadd(hour,3,'00:00:00') as time) 

das gibt Ergebnis:

03:00:00.0000000 

Verwenden Sie Ihre int-Werte anstelle von 3 in obiger Aussage

0

Verwenden datetime zu varchar Datentyp umwandeln und Verwendung Fallsachricht

DECLARE @date datetime ='2016-05-01 10:00:000' 


SELECT CASE cast(DATEPART(hh,@date)as varchar(10)) 
     WHEN '10'then '10:00' 
     WHEN '11'then '11:00' 
     WHEN '12'then '12:00' 
     . 
     . 
     . 
     WHEN '23' then '23:00' 
END 'Hourpart' 
0

Sie können eine Minute auf die Zeit verketten und warf es zu Zeit

select cast(concat(20,':00') as time(7)) as 'time' 
0

Wenn Sie angezeigt werden wollte ‚HH: MM‘, verwenden Sie die unten Abfrage.

Wenn Sie das Ergebnis als Zeitformat erhalten möchten, verwenden Sie die folgende Abfrage.

SELECT CAST(CAST(23 AS VARCHAR(50))+':00:00' AS TIME) 

ODER

SELECT CAST(DATEADD(HOUR,23,'00:00:00') as time) 

hier ist die Beispielausgabe:

enter image description here