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?

Lukasz Szozda
quelle

Antworten:

353
SELECT DATEPART(HOUR, GETDATE());

DATEPART Dokumentation

Dave Markle
quelle
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.)

Mailand
quelle
9

versuchen Sie auch dieses:

   DATEPART(HOUR,GETDATE()) 

quelle
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
relgrem
quelle
2

Versuchen Sie auch dieses:

SELECT CONVERT(CHAR(8),GETDATE(),108)
armando rodriguez
quelle
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

Dani
quelle
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
Hamid Nadi
quelle
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

Lukasz Szozda
quelle
-2

Sie müssen datepart () verwenden

like 


datepart(hour , getdate())
Fred
quelle
8
Was ist der Sinn Ihres Beitrags, der Informationen wiederholt, die in fast jeder anderen "Antwort" auf diese Frage enthalten sind?
Cindy Meister