Mengekstrak jam dari DateTime (SQL Server 2005)

179

Saya dapat mengekstrak bulan dan hari dengan menggunakan Day(Date()), Month(Date()). Saya tidak bisa mengekstrak jam, dengan HOUR(Date()). Saya mendapatkan kesalahan berikut.

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

Bagaimana saya bisa mengekstrak jam?

Lukasz Szozda
sumber

Jawaban:

354
SELECT DATEPART(HOUR, GETDATE());

DATEPART dokumentasi

Dave Markle
sumber
11
Tolong sebutkan hal-hal seperti HOURalih - alih menggunakan steno malas yang tidak selalu seperti yang Anda harapkan (coba y). Merasa bebas untuk mempertahankan kode Anda sendiri sesuka Anda, tetapi untuk pengajaran, saya menentang mempromosikan steno malas yang mengarah pada kebingungan atau lebih buruk. Lihat # 6 di sini blogs.sqlsentry.com/aaronbertrand/… dan sqlblog.com/blogs/aaron_bertrand/archive/2011/09/20/…
Aaron Bertrand
3
@AaronBertrand Itu bukan "pemalas kata", itu adalah bentuk pendek yang didokumentasikan. "Malas" menggunakan formulir pendek yang lebih pendek dari versi minimal yang didokumentasikan, yang mungkin berfungsi tetapi mungkin memiliki konsekuensi yang tidak diinginkan.
Auspex
3
@ Auspex Tidak bisa memaksa Anda untuk tidak sepenuhnya melewatkan poin atau membaca alasan di balik kata-kata saya. Tidak semua yang didokumentasikan adalah praktik terbaik.
Aaron Bertrand
5
@ AaronBertrand saya mengerti maksudnya. Tapi Anda mencoba menegakkan (sejauh mengedit secara tidak benar jawaban banyak orang) standar Anda sendiri. "Praktik terbaik" Anda tidak ada bedanya.
Auspex
29

... Anda dapat menggunakannya pada semua jenis rincian yaitu:

DATEPART(YEAR, [date])

DATEPART(MONTH, [date]) 

DATEPART(DAY, [date])    

DATEPART(HOUR, [date]) 

DATEPART(MINUTE, [date])

(catatan: Saya suka [] di sekitar tanggal kata yang dicadangkan. Tentu saja kalau-kalau kolom Anda dengan stempel waktu diberi label "tanggal")

Milan
sumber
14

Gunakan datepart .

Misalnya:

datepart(hh, date)
Adrian Godong
sumber
9

coba yang ini juga:

   DATEPART(HOUR,GETDATE()) 

sumber
2

DATEPART(HOUR, [date]) mengembalikan jam dalam waktu militer (00 hingga 23) Jika Anda ingin 01:00, 15:00 dll, Anda perlu untuk kasus ini:

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
sumber
2

Coba yang ini juga:

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

bekerja

Dani
sumber
1

Fungsi DATEPART () digunakan untuk mengembalikan satu bagian dari tanggal / waktu, seperti tahun, bulan, hari, jam, menit, dll.

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 

Contoh

select * 
from table001
where datepart(hh,datetime) like 23
Hamid Nadi
sumber
0

Saya tidak dapat mengekstraksi jam, dengan HOUR (Tanggal ())

Ada cara untuk memanggil HOUR(saya tidak akan merekomendasikan untuk menggunakannya karena ada DATEPARTfungsi) menggunakan ODBC Scalar Functions :

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

LiveDemo

Lukasz Szozda
sumber
-2

Anda harus menggunakan datepart ()

like 


datepart(hour , getdate())
Fred
sumber
8
Apa gunanya kontribusi Anda, yang mengulangi informasi yang disediakan di hampir setiap "jawaban" untuk pertanyaan ini?
Cindy Meister