Stunden aus einer DateTime extrahieren (SQL Server 2005)


179

Ich kann den Monat und den Tag extrahieren, indem ich Day(Date()), Month(Date()). Ich kann mit nicht Stunden extrahieren HOUR(Date()). Ich erhalte den folgenden Fehler.

'HOUR' is not a recognized built-in function name.

Wie kann ich Stunden extrahieren?

Antworten:


353
SELECT DATEPART(HOUR, GETDATE());

DATEPART Dokumentation


11
Bitte buchstabieren Sie Dinge wie, HOURanstatt faule Kurzschrift zu verwenden, die nicht immer das ist, was Sie erwarten (versuchen Sie es y). Fühlen Sie sich frei, Ihren eigenen Code zu pflegen, wie Sie möchten, aber für das Unterrichten bin ich dagegen , faule Kurzschrift zu fördern , die zu Verwirrung oder Schlimmerem führt. Siehe # 6 hier blogs.sqlsentry.com/aaronbertrand/… und sqlblog.com/blogs/aaron_bertrand/archive/2011/09/20/…
Aaron Bertrand

3
@AaronBertrand Das ist keine "faule Kurzschrift", sondern die dokumentierte Kurzform. "Lazy" verwendet Kurzformen, die kürzer als die minimal dokumentierte Version sind. Dies kann funktionieren, aber unbeabsichtigte Konsequenzen haben.
Auspex

3
@Auspex Ich kann Sie nicht zwingen, den Punkt nicht völlig zu verpassen oder die Gründe für meine Worte zu lesen. Nicht alles, was dokumentiert ist, ist eine bewährte Methode.
Aaron Bertrand

5
@ AaronBertrand Ich habe verstanden. Sie versuchen jedoch, Ihre eigenen Standards durchzusetzen (sofern die Antworten mehrerer Personen nicht ordnungsgemäß bearbeitet werden ). Ihre "Best Practice" ist nichts dergleichen.
Auspex

29

... Sie können es für jeden Granularitätstyp verwenden, dh:

DATEPART(YEAR, [date])

DATEPART(MONTH, [date]) 

DATEPART(DAY, [date])    

DATEPART(HOUR, [date]) 

DATEPART(MINUTE, [date])

(Hinweis: Ich mag das Wort [] um das reservierte Datum. Natürlich, falls Ihre Spalte mit dem Zeitstempel mit "Datum" gekennzeichnet ist.)



9

versuchen Sie auch dieses:

   DATEPART(HOUR,GETDATE()) 

2

DATEPART(HOUR, [date]) Gibt die Stunde in Militärzeit (00 bis 23) zurück. Wenn Sie 1 Uhr morgens, 15 Uhr morgens usw. möchten, müssen Sie Folgendes herausfinden:

SELECT Run_Time_Hour =
CASE DATEPART(HOUR, R.date_schedule)
    WHEN 0 THEN  '12AM'
    WHEN 1 THEN   '1AM'
    WHEN 2 THEN   '2AM'
    WHEN 3 THEN   '3AM'
    WHEN 4 THEN   '4AM'
    WHEN 5 THEN   '5AM'
    WHEN 6 THEN   '6AM'
    WHEN 7 THEN   '7AM'
    WHEN 8 THEN   '8AM'
    WHEN 9 THEN   '9AM'
    WHEN 10 THEN '10AM'
    WHEN 11 THEN '11AM'
    WHEN 12 THEN '12PM'
    ELSE CONVERT(varchar, DATEPART(HOUR, R.date_schedule)-12) + 'PM'
END
FROM
    dbo.ARCHIVE_RUN_SCHEDULE R


1
select case when [am or _pm] ='PM' and datepart(HOUR,time_received)<>12 
           then dateadd(hour,12,time_received) 
           else time_received 
       END 
from table

funktioniert


1

Die Funktion DATEPART () wird verwendet, um einen einzelnen Teil eines Datums / einer Uhrzeit zurückzugeben, z. B. Jahr, Monat, Tag, Stunde, Minute usw.

datepart    ***Abbreviation

year        ***yy, yyyy 
quarter     ***qq, q 
month       ***mm, m 
dayofyear   ***dy, y 
day         ***dd, d 
week        ***wk, ww 
weekday     ***dw, w 
hour        ***hh 
minute      ***mi, n 
second      ***ss, s 
millisecond ***ms 
microsecond ***mcs 
nanosecond  ***ns 

Beispiel

select * 
from table001
where datepart(hh,datetime) like 23

0

Ich kann mit HOUR (Date ()) keine Stunden extrahieren.

Es gibt eine Möglichkeit, ODBC-Skalarfunktionen aufzurufen HOUR(ich würde es jedoch nicht empfehlen, da es eine DATEPARTFunktion gibt) :

SELECT {fn HOUR(GETDATE())} AS hour

LiveDemo


-2

Sie müssen datepart () verwenden

like 


datepart(hour , getdate())

8
Was ist der Sinn Ihres Beitrags, der Informationen wiederholt, die in fast jeder anderen "Antwort" auf diese Frage enthalten sind?
Cindy Meister
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.