Extraction d'heures à partir d'un DateTime (SQL Server 2005)


186

Je peux extraire le mois et le jour en utilisant Day(Date()), Month(Date()). Je ne peux pas extraire des heures, avec HOUR(Date()). J'obtiens l'erreur suivante.

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

Comment puis-je extraire des heures?

Réponses:


367
SELECT DATEPART(HOUR, GETDATE());

DATEPART Documentation


13
Veuillez préciser des choses comme HOURau lieu d'utiliser un raccourci paresseux qui n'est pas toujours ce à quoi vous vous attendez (essayez y). N'hésitez pas à maintenir votre propre code comme vous le souhaitez, mais pour l'enseignement, je suis opposé à la promotion d'une sténographie paresseuse qui mène à la confusion ou pire. Voir le n ° 6 ici: blogs.sqlsentry.com/aaronbertrand/… et sqlblog.com/blogs/aaron_bertrand/archive/2011/09/20/…
Aaron Bertrand

4
@AaronBertrand Ce n'est pas un "raccourci paresseux", c'est le raccourci documenté. "Lazy" utilise des formes courtes qui sont plus courtes que la version documentée minimale, ce qui peut fonctionner mais peut avoir des conséquences inattendues.
Auspex

4
@Auspex Je ne peux pas vous forcer à ne pas manquer complètement le point ou à lire les raisons de mes paroles. Tout ce qui est documenté n'est pas une pratique exemplaire.
Aaron Bertrand

6
@AaronBertrand J'ai compris. Mais vous essayez d'appliquer (au point de modifier incorrectement les réponses de plusieurs personnes) vos propres normes. Votre "meilleure pratique" n'est rien de tout cela.
Auspex

31

... vous pouvez l'utiliser sur n'importe quel type de granularité c'est-à-dire:

DATEPART(YEAR, [date])

DATEPART(MONTH, [date]) 

DATEPART(DAY, [date])    

DATEPART(HOUR, [date]) 

DATEPART(MINUTE, [date])

(Remarque: j'aime bien le [] autour du mot réservé pour la date. Bien sûr, c'est au cas où votre colonne avec horodatage est étiquetée "date")



10

essayez celui-ci aussi:

   DATEPART(HOUR,GETDATE()) 

2

DATEPART(HOUR, [date]) renvoie l'heure en heure militaire (00 à 23) Si vous voulez 1h00, 15h00, etc., vous devez la caser:

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

2

La fonction DATEPART () est utilisée pour renvoyer une seule partie d'une date / heure, telle que l'année, le mois, le jour, l'heure, les minutes, etc.

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 

Exemple

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


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

travaux


0

Je ne peux pas extraire les heures, avec HOUR (Date ())

Il existe un moyen d'appeler HOUR(je ne recommanderais pas de l'utiliser car il y a une DATEPARTfonction) en utilisant les fonctions scalaires ODBC :

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

LiveDemo


-1
select convert(time,GETDATE())

10
Veuillez ajouter quelques explications à votre réponse afin que les autres puissent en tirer des leçons
Nico Haase

-3

vous devez utiliser datepart ()

like 


datepart(hour , getdate())

9
À quoi sert votre contribution, qui répète les informations fournies dans presque toutes les autres «réponses» à cette question?
Cindy Meister du
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.