Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » SQL Server »

Obtener SOLO la hora en sql

Estas en el tema de Obtener SOLO la hora en sql en el foro de SQL Server en Foros del Web. Saludos foreros! Vereis, intento extraer la hora en formato hora:minutos:segundos y guardarlo en un campo llamado HoraRes en cual es de tipo datetime con una ...
  #1 (permalink)  
Antiguo 21/09/2011, 03:29
 
Fecha de Ingreso: julio-2011
Ubicación: Barcelona
Mensajes: 9
Antigüedad: 12 años, 10 meses
Puntos: 0
Pregunta Obtener SOLO la hora en sql

Saludos foreros!
Vereis, intento extraer la hora en formato hora:minutos:segundos y guardarlo en un campo llamado HoraRes en cual es de tipo datetime con una longitud = 8

se lo mando de esta manera:

right(convert(char(9),getDate(),8),8)

creedme que lo he provado con muchos tipos y en la base de datos me guarda la hora i ademas la fecha(1-1-1990)
yo SOLAMENTE quiero que me guarde la hora.
Pienso que puede ser un problema de la estructura de la columna en la base de datos, pero yo le pongo que sea datetime y 8 caracteres de longitud
Si alguien pudiera decirme donde podria estar el fallo u orientarme un poco
Gracias por la ayuda y por el tiempo gastado
  #2 (permalink)  
Antiguo 21/09/2011, 07:41
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 9 meses
Puntos: 774
Respuesta: Obtener SOLO la hora en sql

http://msdn.microsoft.com/en-us/libr...sql.90%29.aspx

Con la funcion datepart solucionas tu problema :)

Saludos!
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #3 (permalink)  
Antiguo 21/09/2011, 09:30
Colaborador
 
Fecha de Ingreso: enero-2007
Ubicación: México
Mensajes: 2.097
Antigüedad: 17 años, 4 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.

Etiquetas: fecha, sql, campos
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 15:54.