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

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

34

Angenommen, SQL Server

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


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
   ...

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())

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))

5

Versuche dies:

select  convert(nvarchar,CAST(getdate()as time),100)


3

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


3
select cast (as time(0))

wäre eine gute Klausel. Beispielsweise:

(select cast(start_date as time(0))) AS 'START TIME'

3

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

SELECT CONVERT(VARCHAR(9),RIGHT(YOURCOLUMN_DATETIME,9),108) FROM YOURTABLE

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)

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.

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


1
select convert(char(5), tbl_CustomerBooking.CheckInTime, 108) AS [time]
from tbl_CustomerBooking

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) )

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.


-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

Funktioniert nicht gibt Fehler'to_char' is not a recognized built-in function name.
Captainsac
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.