DateTime'dan saat ayıklama (SQL Server 2005)


179

Ben kullanarak ay ve gün çıkarabilir Day(Date()), Month(Date()). Saatlerce ayıklayamam HOUR(Date()). Aşağıdaki hatayı alıyorum.

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

Saatleri nasıl çıkarabilirim?

Yanıtlar:


354
SELECT DATEPART(HOUR, GETDATE());

DATEPART belgeleme


11
Lütfen HOURtembel steno kullanmak yerine her zaman beklediğiniz gibi olmayan şeyleri heceleyin (deneyin y). İstediğiniz gibi kendi kodunuzu korumaktan çekinmeyin, ancak öğretim için, karışıklığa veya daha kötüye yol açan tembel stenoyu teşvik etmeye karşıyım . Bkz. # 6 blogs.sqlsentry.com/aaronbertrand/… ve sqlblog.com/blogs/aaron_bertrand/archive/2011/09/20/…
Aaron Bertrand

3
@AaronBertrand Bu "tembel steno" değil, belgelenmiş kısa biçim. "Tembel" çalışabilen ancak istenmeyen sonuçları olabilecek en az belgelenmiş sürümden daha kısa olan kısa formlar kullanıyor.
Auspex

3
@Auspex Seni tamamen kaçırmamaya ya da kelimelerimin arkasındaki nedenleri okumaya zorlayamazsın. Belgelenen her şey en iyi uygulama değildir.
Aaron Bertrand

5
@AaronBertrand Anladım. Ancak , kendi standartlarınızı ( birden fazla kişinin yanıtını yanlış bir şekilde düzenlediği ölçüde) uygulamaya çalışıyorsunuz . "En iyi pratiğiniz" böyle bir şey değildir.
Auspex

29

... herhangi bir ayrıntı düzeyinde kullanabilirsiniz:

DATEPART(YEAR, [date])

DATEPART(MONTH, [date]) 

DATEPART(DAY, [date])    

DATEPART(HOUR, [date]) 

DATEPART(MINUTE, [date])

(not: [] Ayrılmış tarih etrafında [] seviyorum. Tabii ki zaman damgalı sütunun "tarih" olarak etiketlenmiş olması durumunda)



9

bunu da deneyin:

   DATEPART(HOUR,GETDATE()) 

2

DATEPART(HOUR, [date]) Askeri saatte saati döndürür (00-23) 01:00, 15:00 vb. istiyorsanız, bunu belirtmeniz gerekir:

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

İşler


1

DATEPART () işlevi, tarih / saatin yıl, ay, gün, saat, dakika gibi tek bir bölümünü döndürmek için kullanılır.

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 

Misal

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


-2

datepart () kullanmalısınız

like 


datepart(hour , getdate())

8
Bu soruya hemen hemen her "cevapta" verilen bilgileri tekrarlayan katkınızın anlamı nedir?
Cindy Meister
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.