Wie erhalte ich die Zeit aus dem DateTime-Format in SQL?

179

Ich möchte nur die Zeit aus der DateTime-Spalte mithilfe einer SQL-Abfrage mit SQL Server 2005 und 2008 abrufen. Standardausgabe:

AttDate                   
==
2011-02-09 13:09:00    
2011-02-09 14:10:00    

Ich möchte diese Ausgabe:

AttDate                Time 
==
2011-02-09 13:09:00    13:09
2011-02-09 14:10:00    14:10
Jig12
quelle
Suche nach to_char Methode in SQL. Sie können das Format angeben und die gewünschte Ausgabe erhalten
Naveen Babu
1
Wählen Sie konvertieren (varchar (10), getdate (), 108)
rahularyansharma
Es könnte SELECT CONVERT(VARCHAR(8),GETDATE(),108)für SQL Server sein
V4Vendetta

Antworten:

339

SQL Server 2008:

SELECT cast(AttDate as time) [time]
FROM yourtable

Frühere Versionen:

SELECT convert(char(5), AttDate, 108) [time]
FROM yourtable
t-clausen.dk
quelle
34

Angenommen, SQL Server

SELECT CONVERT(VARCHAR(8),GETDATE(),108)

V4Vendetta
quelle
Es funktioniert nur unter getdate (), wo, wenn ich select convert (varchar (8), '2011-02-09 13: 09: 00', 108) übergebe, die ersten 8 Zeichen ab dem Datum erzeugt werden, wie dies behoben werden soll ?
Aparna
24

SQL Server 2008+ hat einen Datentyp "Zeit"

SELECT 
    ..., CAST(MyDateTimeCol AS time)
FROM
   ...

Für ältere Versionen ohne Varchar-Konvertierungen

SELECT 
    ..., DATEADD(dd, DATEDIFF(dd, MyDateTimeCol, 0), MyDateTimeCol)
FROM
   ...
gbn
quelle
Warum verwenden Sie diese SELECT CONVERT (VARCHAR (8), GETDATE (), 108) AS HourMinuteSecond, CONVERT (VARCHAR (8), GETDATE (), 101) AS DateOnly gibt es Leistungsprobleme?
Rahularyansharma
2
@rahularyansharma: Ich verwende keine Varchar-Konvertierung für Daten, wenn nötig
gbn
Sir, ich möchte wissen, ob es zu Leistungseinbußen kommt, wenn wir diese anstelle Ihrer Lösung verwenden.
Rahularyansharma
1
@rahularyansharma: Sie können sich basierend auf diesem stackoverflow.com/questions/133081/…
gbn
1
Für alle, die nicht folgen, 0steht das Mindestdatum 1900-01-01. Dies ergibt also die (negative) Anzahl von Tagen zwischen dem Spaltenwert und 0 und addiert dann diese negativen Tage zum Spaltenwert, der den Datumsteil "auf Null setzt", 1900-01-01und Sie haben nur noch die Zeit.
xr280xr
13

Der einfachste Weg, die Zeit von datetime ohne Millisekundenstapel abzurufen, ist:

SELECT convert(time(0),getDate())
BigDaddy
quelle
10

Versuchen Sie es mit diesem

  • Datum zu Uhrzeit

    select cast(getdate() as time(0))
  • Zeit für TinyTime

    select cast(orig_time as time(0))
Cantarero
quelle
5

Versuche dies:

select  convert(nvarchar,CAST(getdate()as time),100)
Balaji N.
quelle
5

Versuchen Sie dies, es wird funktionieren:

CONVERT(VARCHAR(8),DATETIME,114)

Als Referenz .

user8498521
quelle
3

select AttDate,convert(char(5), AttDate, 108) [Time] from yourTableName

Sagar Shah
quelle
3
select cast (as time(0))

wäre eine gute Klausel. Beispielsweise:

(select cast(start_date as time(0))) AS 'START TIME'
Metin Özsoy
quelle
3

Ich benutze dieses Skript oft, um die Zeit von DateTime abzurufen:

SELECT CONVERT(VARCHAR(9),RIGHT(YOURCOLUMN_DATETIME,9),108) FROM YOURTABLE
ChinoNoypi
quelle
Warum bekomme ich 9 vor der Zeit .. Ergebnis: 9 23:21 Uhr
Sayed Muhammad Idrees
2

Um die Zeit von datetime zu erhalten, können wir verwenden

SELECT CONVERT(VARCHAR(20), GETDATE(), 114)
der Van
quelle
2

Wenn Sie etwas in diesem Stil datieren möchten: 23. Oktober 2013, 10:30 Uhr

Benutze das

SELECT CONVERT(NVARCHAR(30),getdate(), 100)

convert() Methode nimmt 3 Parameter

  1. Datentyp
  2. Spalte / Wert
  3. Stil: Die verfügbaren Stile liegen zwischen 100 und 114. Sie können innerhalb des Bereichs von auswählen. Wählen Sie eine nach der anderen, um das Datumsformat zu ändern.
Arif Ansari
quelle
2

Datum des Servers abrufen

SELECT LTRIM(RIGHT(CONVERT(VARCHAR(20), GETDATE(), 100), 7)) FROM TABLENAME WHERE ...

oder

Wenn es in der Tabelle gespeichert ist

SELECT LTRIM(RIGHT(CONVERT(VARCHAR(20), datename, 100), 7)) FROM TABLENAME WHERE ...

Ergebnis:

11:41 Uhr

Luis Gerardo López Salazar
quelle
1
select convert(char(5), tbl_CustomerBooking.CheckInTime, 108) AS [time]
from tbl_CustomerBooking
JIYAUL MUSTAPHA
quelle
1

unter MSSQL2012 oder höher

cast(dateadd(ms,datediff(ms, [StartDateTime], [StopDateTime]),0) as Time(0))

...oder...

convert(time(0),dateadd(ms,datediff(ms, [StartDateTime], [StopDateTime]),0) )
aVB.NetCoder
quelle
1

SQL Server 2012:

Select TRY_CONVERT(TIME, myDateTimeColumn) from myTable;

Persönlich bevorzuge ich TRY_CONVERT () gegenüber CONVERT (). Der Hauptunterschied: Wenn die Umwandlung fehlschlägt, gibt TRY_CONVERT () NULL zurück, während CONVERT () einen Fehler auslöst.

jinhr
quelle
-1

select substr(to_char(colUmn_name, 'DD/MM/RRRR HH:MM:SS'),11,19) from table_name;

Ausgabe: von

05:11:26
05:11:24
05:11:24
user7131338
quelle
Funktioniert nicht gibt Fehler'to_char' is not a recognized built-in function name.
Captainsac