Ver Mensaje Individual
  #3 (permalink)  
Antiguo 21/09/2011, 09:30
leonardo_josue
Colaborador
 
Fecha de Ingreso: enero-2007
Ubicación: México
Mensajes: 2.097
Antigüedad: 17 años, 5 meses
Puntos: 447
Respuesta: Obtener SOLO la hora en sql

Hola Cubino:

Creo que no has entendido muy bien el concepto de campo datetime y el manejo de fechas. El tipo de dato DATETIME almacena LA FECHA Y LA HORA, es decir que nunca podrás tener un campo donde se almacene sólo la hora.

La versión 2008 de SQL Server maneja los tipos de campo DATE y TIME por separado, para poder almacenar sólo la fecha o sólo la hora. sin embargo SQL Server 2005 sólo maneja los tipos de fecha datetime y smalldatetime, sería conveniente que nos comentaras que versión-edición de SQL Server estás manejando.

Al margen de lo que comenta Libras, creo que también deberías darle un vistazo a la función CONVERT, ya que esta te permite formatear una fecha,

CAST y CONVERT (Transact-SQL)

En específico, debes checar el parámetro de style, el 108 por ejemplo te permite formatear una fecha a formato de hora (hh:mi:ss):

Código SQL:
Ver original
  1. SELECT
  2. getdate() fecha_hora,
  3. CONVERT(VARCHAR, getdate(), 108) hora
  4.  
  5. /*
  6. fecha_hora              hora
  7. ----------------------- ------------------------------
  8. 2011-09-21 09:11:55.630 09:11:55
  9. *
/


Ahora veamos qué pasa si intentas almacenar una hora en un campo datetime:

Código SQL:
Ver original
  1. SELECT CONVERT(datetime, '09:11:55', 108)
  2. /*
  3. -----------------------
  4. 1900-01-01 09:11:55.000
  5. */

observa que al convertir una hora a datetime le asigna por defecto un DIA
(1900-01-01), que creo que es lo que comentas al final, esto se debe a lo que comenté al principio, y es que un campo datetime NUNCA PODRÁ ALMACENAR SÓLO LA HORA.

Dale un vistazo y espero tus comentarios.

Saludos
Leo.



Saludos
Leo.