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?

Jawaban:


354
SELECT DATEPART(HOUR, GETDATE());

DATEPART dokumentasi


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



9

coba yang ini juga:

   DATEPART(HOUR,GETDATE()) 

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


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


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

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


-2

Anda harus menggunakan datepart ()

like 


datepart(hour , getdate())

8
Apa gunanya kontribusi Anda, yang mengulangi informasi yang disediakan di hampir setiap "jawaban" untuk pertanyaan ini?
Cindy Meister
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.