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?

Lukasz Szozda
la source

Réponses:

367
SELECT DATEPART(HOUR, GETDATE());

DATEPART Documentation

Dave Markle
la source
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")

Milan
la source
10

essayez celui-ci aussi:

   DATEPART(HOUR,GETDATE()) 

la source
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
relgrem
la source
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
Hamid Nadi
la source
2

Essayez aussi celui-ci:

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

Dani
la source
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

Lukasz Szozda
la source
-1
select convert(time,GETDATE())
R.Alonso
la source
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())
Fred
la source
9
À quoi sert votre contribution, qui répète les informations fournies dans presque toutes les autres «réponses» à cette question?
Cindy Meister du