Extraer horas de un DateTime (SQL Server 2005)

179

Soy capaz de extraer el mes y día mediante el uso de Day(Date()), Month(Date()). No puedo extraer horas, con HOUR(Date()). Obtuve el siguiente error.

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

¿Cómo puedo extraer horas?

Lukasz Szozda
fuente

Respuestas:

354
SELECT DATEPART(HOUR, GETDATE());

DATEPART documentación

Dave Markle
fuente
11
Por favor, deletree cosas como, en HOURlugar de usar la taquigrafía perezosa que no siempre es lo que espera (intente y). Siéntase libre de mantener su propio código como quiera, pero para enseñar, me opongo a promover la taquigrafía perezosa que genera confusión o algo peor. Ver # 6 aquí blogs.sqlsentry.com/aaronbertrand/… y sqlblog.com/blogs/aaron_bertrand/archive/2011/09/20/…
Aaron Bertrand
3
@AaronBertrand Eso no es "taquigrafía perezosa", es la forma abreviada documentada. "Perezoso" está utilizando formas cortas que son más cortas que la versión mínima documentada, lo que puede funcionar pero puede tener consecuencias no deseadas.
Auspex
3
@Auspex No puedo forzarlo a no perder completamente el punto o leer las razones detrás de mis palabras. No todo lo que está documentado es una mejor práctica.
Aaron Bertrand
55
@ AaronBertrand Entendí el punto. Pero está tratando de hacer cumplir (hasta el punto de editar incorrectamente las respuestas de varias personas) sus propios estándares. Su "mejor práctica" no es nada de eso.
Auspex el
29

... puede usarlo en cualquier tipo de granularidad, es decir:

DATEPART(YEAR, [date])

DATEPART(MONTH, [date]) 

DATEPART(DAY, [date])    

DATEPART(HOUR, [date]) 

DATEPART(MINUTE, [date])

(nota: sin embargo, me gusta la palabra [] alrededor de la fecha reservada. Por supuesto, en caso de que su columna con marca de tiempo esté etiquetada como "fecha")

Milán
fuente
9

prueba este también:

   DATEPART(HOUR,GETDATE()) 

fuente
2

DATEPART(HOUR, [date]) devuelve la hora en tiempo militar (00 a 23) Si desea 1 a.m., 3 p.m., etc., debe ponerlo en caso:

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

Prueba este también:

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

trabajos

Dani
fuente
1

La función DATEPART () se usa para devolver una sola parte de una fecha / hora, como año, mes, día, hora, minuto, 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 

Ejemplo

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

No puedo extraer horas, con HOUR (Fecha ())

Hay una manera de llamar HOUR(aunque no recomendaría usarlo porque hay una DATEPARTfunción) usando las funciones escalares ODBC :

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

LiveDemo

Lukasz Szozda
fuente
-2

debes usar datepart ()

like 


datepart(hour , getdate())
Fred
fuente
8
¿Cuál es el punto de su contribución, que repite la información provista en casi todas las "respuestas" a esta pregunta?
Cindy Meister