SQL - Insertar Hora

   
Vista:

Insertar Hora

Publicado por Damian (26 intervenciones) el 19/06/2008 20:34:24
Queria saber como puedo hacer para insertar una hora(solo la hora) en un campo de mi tabla, yo a este campo lo puse como timestamp, no se si este es el tipo para la hora o tengo que ponerlo de tipo datetime en SQL 2005, pero desde VB.NET la pongo entre comillas en el insert y me trira error.
Esta hora la ingresa el usuario desde un MaskTextBox, yo solo quiero la hora que el usuario ingreso no la fecha ya que esta la tengo en otro campo y por separado. Bueno espero puedan ayudarme. Gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Insertar Hora

Publicado por Isaias (5073 intervenciones) el 20/06/2008 00:11:58
En SQL SERVER 2005 (y anteriores), no se deben separarse las fechas de las horas, es un campo DATETIME con formato ANSI (yyyymmdd hh:mm:ss,nnn)

Si deseas separar fechas de horas, tienes las funciones DATEPART, CAST/CONVERT, ejemplo:

SELECT CAST(CHAR(5), GETDATE(), 108) -- HH:MM
SELECT CAST(CHAR(8), GETDATE(), 112) -- YYYYMMDD

Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Insertar Hora

Publicado por Damian (26 intervenciones) el 23/06/2008 18:53:09
Pasa que no me queda otra que separarlas ya que si no como hace el usuario para ingresar la fecha y la hora del envio de un pedido, esto no lo puedo poner en una caja de texto por ejemplo o en el caso que la fecha vaya en una caja de texto y la hora en otra, como inserto en la base de datos en una sola columna(FechaPedido por ejemplo) los dos datos. Por eso si o si va en dos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Insertar Hora

Publicado por pacopaz (143 intervenciones) el 23/06/2008 19:41:06
Damian:
Concuerdo con el punto de vista de Isaias.
Para cada registro, si pusieras la fecha y la hora en un solo campo te ahorrarías 8 bytes, que igual no te significa mucho en espacio en disco duro (mil registros sólo ahorrarían 8Kb), pero en cuestión de tráfico en la red es algo a considerar.
Si bien es cierto que tienes que implementar en tu aplicación un campo para fecha y otro para hora, esto no significa que no puedas guardarlo en un sólo registro, así que tu 'si o si' debería cambiar a 'si o tal vez tengo que trabajar más'.
La implementación debería ser la suma de tus campos de texto fecha + espacio + hora. Lo normal es que sea la fecha la pases en formato mm/dd/yyyy y la hora en hh:mm:ss, donde hh es en formato de 24 horas.
Entiendo que estamos muy (mal) acostumbrados a utilizar campos unidos directamente a un campo en un recordset, pero implementaciones más limpias (con validaciones previas a la inserción/modificación) deberían ser la norma.

Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Insertar Hora

Publicado por Isaias (5073 intervenciones) el 23/06/2008 22:34:17
Veamos

Tu aplicativo puede pedir la FECHA y la HORA separados, pero al momento de mandarlo a la base, debes CONCATENARLO y mandarlo en un solo campo, con el siguiente formato

YYYYMMDD HH:MM:SS, NNN

Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Insertar Hora

Publicado por Damian (26 intervenciones) el 26/06/2008 00:55:39
Esta bien lo que dicen pero también pasa que la hora no es obligatoria a que se ingrese pero la fecha si y ahi no se si se puede concatenar la fecha y null(hora no ingresada) por ejemplo, creo que al ser de tipo DateTime esto no se puede o me pondra a la hora que no se ingrese como 12:00:00 a.m.
Entonces me quedaria algo asi 23/06/2008 12:00:00 a.m.
Es por eso que no me sirve ya que si realmente el usuario ingresa la hora 12:00:00 a.m. yo nunca voy a saber cuando traiga la hora de esa fecha si la hora no la ingreso o si la hora es 12:00:00 a.m.
Capaz que me estoy enroscando mucho, por eso hice lo mas simple que fue separar la hora de la fecha, ya que si no me ingresa la hora esta me lo guarda como null en la base. Gracias por la ayuda chicos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Insertar Hora

Publicado por Isaias (5073 intervenciones) el 26/06/2008 02:49:17
A ver, si yo pido en mi aplicativo la fecha y la hora por separado, DEBO CONCATENAR lo que me haya tecleado.

Si la hora no fue introducida (tecleada), entonces el valor por default es 00:00:00

¿Cual es el problema?, no entiendo a donde quiere llegar

Debe entener que SQL Server, como la gran mayoria de los motores de datos, almacenan los campos DATETIME con formato ANSI (yyyymmdd hh:mm:ss, nnn)

A diferencia de SQL SERVER 2008, que ya tiene la capacidad de separar fechas de horas.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar