Foros del Web » Programando para Internet » ASP Clásico »

Hora en sql server

Estas en el tema de Hora en sql server en el foro de ASP Clásico en Foros del Web. tengo una tabla que guarda las horas de incio de sesión en formato :hh:mm:ss a.m. ó p.m. Con access no tenia problema con la sentencia: ...

  #1 (permalink)  
Antiguo 30/06/2005, 09:57
 
Fecha de Ingreso: abril-2004
Ubicación: México D.F.
Mensajes: 1.724
Antigüedad: 20 años, 1 mes
Puntos: 4
Hora en sql server

tengo una tabla que guarda las horas de incio de sesión en formato :hh:mm:ss a.m. ó p.m.

Con access no tenia problema con la sentencia:

hora_fin=' " & Request.form("termina_sesion")) & " ' mas instrucciones .......

donde termina_sesion es un valor como 12:00:00 P.M.

el tipo de dato es datetime en sql server, pero no guarda nada, pues no interpreta la hora y simplemante lo ignora.

Alguna ayuda , les agradeceria.
  #2 (permalink)  
Antiguo 30/06/2005, 10:33
Avatar de u_goldman
Moderador
 
Fecha de Ingreso: enero-2002
Mensajes: 8.031
Antigüedad: 22 años, 4 meses
Puntos: 98
Y si intentas guardarlo con todo y la fecha y despues recuperas la fecha y solo obtienes la hora? Me parece que hay una funcion format de VB que hace eso aunque no estoy seguro...deja hacer unas pruebas.

Salu2,
__________________
"El hombre que ha empezado a vivir seriamente por dentro, empieza a vivir más sencillamente por fuera."
-- Ernest Hemingway
  #3 (permalink)  
Antiguo 30/06/2005, 10:38
 
Fecha de Ingreso: abril-2004
Ubicación: México D.F.
Mensajes: 1.724
Antigüedad: 20 años, 1 mes
Puntos: 4
Hola, mira estoy viendo que para guardar las fachas en tipo de dato datetime en sql server me las guarda como :

01/01/1900 09:48:49 p.m. en vez de 09:48:49 p.m. Ok.

4 bytes fecha y 4 bytes hora.

entonces cuando un usuario inicia sesion como compara la ahora actual ???
si x ejemplo son las 10:12:58 y tiene un inio de sesion guardado en sql de
01/01/1900 12:00:00 a.m.

?? El peor de los casos es que estoy en un nuevo job.
  #4 (permalink)  
Antiguo 30/06/2005, 10:38
Avatar de Neuron_376  
Fecha de Ingreso: abril-2005
Mensajes: 1.051
Antigüedad: 19 años, 1 mes
Puntos: 2
Hola!

Como recomendación, te diría que las fechas las bases siempre en la hora de la base de datos, con lo cual, lo que guardarias sería siempre como un getdate(), es decir:

update tabla set timeSessionOut = getdate()

Y listo, siempre es bueno basar el sistema de tiempo ya sea en la DB o en el WEB, pero es mas recomendable el DB, porque es mas comun tener 1 DB y varios WEB.

Suerte!!
__________________
NeuronaNet.com... la idea correcta.
http://www.NeuronaNet.com
  #5 (permalink)  
Antiguo 30/06/2005, 10:41
Avatar de u_goldman
Moderador
 
Fecha de Ingreso: enero-2002
Mensajes: 8.031
Antigüedad: 22 años, 4 meses
Puntos: 98
ASi es GetDate() es en SQL como Now() para VB
Y supongo que despues quisieras compara solamente las horas no?
__________________
"El hombre que ha empezado a vivir seriamente por dentro, empieza a vivir más sencillamente por fuera."
-- Ernest Hemingway
  #6 (permalink)  
Antiguo 30/06/2005, 10:42
 
Fecha de Ingreso: abril-2004
Ubicación: México D.F.
Mensajes: 1.724
Antigüedad: 20 años, 1 mes
Puntos: 4
Lo que pasa es de que el administrador puede restringir los inicios de sesión al sistema x ejemplo de 8:00:00 a.m. a 6:00:00 P.M.

Lo único que quiero y no puedo hacer es guardar :

8:00:00 a.m. en vez de 01/01/1900 09:48:49 p.m.

o tendré que usar tipo de datos texto en vez del actual datetime
  #7 (permalink)  
Antiguo 30/06/2005, 10:46
Avatar de u_goldman
Moderador
 
Fecha de Ingreso: enero-2002
Mensajes: 8.031
Antigüedad: 22 años, 4 meses
Puntos: 98
Pero entonces me parece que lo que sugirio Neuron es totalmente correcto master orharo, en el momento que el administrador quiera restringir el acceso al server, vas a guardar el valor de GetDate(), al final lo unico que nos interesa es la hora, asumiendo que este valor sea un valor global cierto? es decir lo guarda como hora de reestriccion y es valido para el sistema hasta que lo cambie...entonces solo tenemos que pelearnos con la parte de la hora de este valor, es ahi donde creo que hay una funcion que te regresa solamente la hora, veamos

Salu2,
__________________
"El hombre que ha empezado a vivir seriamente por dentro, empieza a vivir más sencillamente por fuera."
-- Ernest Hemingway
  #8 (permalink)  
Antiguo 30/06/2005, 10:47
Avatar de reel  
Fecha de Ingreso: febrero-2004
Ubicación: Managua, Nicaragua
Mensajes: 496
Antigüedad: 20 años, 3 meses
Puntos: 1
Si quieres seguir usando el tipo de dato datetima, te sugiero busques más información de está función DATEPART en la ayuda de SQL Server.

Saludes
__________________
Leer es Saber, REEL.
Mi Blog
  #9 (permalink)  
Antiguo 30/06/2005, 10:48
Avatar de u_goldman
Moderador
 
Fecha de Ingreso: enero-2002
Mensajes: 8.031
Antigüedad: 22 años, 4 meses
Puntos: 98
Cita:
Iniciado por reel
Si quieres seguir usando el tipo de dato datetima, te sugiero busques más información de está función DATEPART en la ayuda de SQL Server.

Saludes
Esa es la solucion!

http://msdn.microsoft.com/library/de...da-db_2mic.asp

Salu2,
__________________
"El hombre que ha empezado a vivir seriamente por dentro, empieza a vivir más sencillamente por fuera."
-- Ernest Hemingway
  #10 (permalink)  
Antiguo 30/06/2005, 10:52
Avatar de Neuron_376  
Fecha de Ingreso: abril-2005
Mensajes: 1.051
Antigüedad: 19 años, 1 mes
Puntos: 2
Hola!

Jejejeje, hasta que estamos de acuerdo desde el principio , mira, una cosa es la administración de los datos, y otra la parte de presentación, es el famoso juego de las tres capas.

Guardar en la base de datos respetando sus reglas es lo mejor, al final, como lo manejes en ASP para tus comparaciones, etc., es cosa de presentación solamente.

Algo como:

1. obtener la fecha de la base de datos en una consulta
2. strTime = Time(Cdate(objRs.("FechaActual"))
3. if x, y, z del tiempo, x, y, z acciones.

Asi tambien, al momento de guardar, usas getdate como decia arriba, de esa forma basas el control de tiempo en el horario de la base de datos, y por fuera manipular ese dato como lo necesites, de preferencia en una funcion para que todo tu codigo respete siempre el mismo proceso.

Bueno, esa para mi sería la mejor solución.

Suerte!!
__________________
NeuronaNet.com... la idea correcta.
http://www.NeuronaNet.com
  #11 (permalink)  
Antiguo 30/06/2005, 10:54
Avatar de u_goldman
Moderador
 
Fecha de Ingreso: enero-2002
Mensajes: 8.031
Antigüedad: 22 años, 4 meses
Puntos: 98
Esto se va a poner aburrido si pasa esto con frecuencia...
__________________
"El hombre que ha empezado a vivir seriamente por dentro, empieza a vivir más sencillamente por fuera."
-- Ernest Hemingway
  #12 (permalink)  
Antiguo 30/06/2005, 10:58
 
Fecha de Ingreso: abril-2004
Ubicación: México D.F.
Mensajes: 1.724
Antigüedad: 20 años, 1 mes
Puntos: 4
Ok. gracias por los comentarios, veamos :

Tengo una página de opciones de usuario :

donde el administrador determina la hora de inicio y fin de sesion de un determinado usuario : entonces podria seleccionar :

8:00:00 a.m. como inicio de sesion y fin de sesion 6:00:00 p.m.

esas horas las envio al servidor y los guardo en un campo no ?

cad vez que se inicia la sesion se verifica la hora para ver si comprende el rango :

hora_inicio,hora_fin son valores que recogo de la base de datos

if(time>=cdate(hora_inicio) and time<=cdate(hora_fin))then
entra....


pero el problema esta en que se guardan como 01/01/1900 8:00:00 a.m.
segun lo que he leido asi se debe de guardar.

Ok, entonces cada vez que traiga la fecha debo de separarla con la funcion datepart :

Claro amigos, agradezco sus aportaciones. Tienen razón . .
  #13 (permalink)  
Antiguo 30/06/2005, 11:01
 
Fecha de Ingreso: abril-2004
Ubicación: México D.F.
Mensajes: 1.724
Antigüedad: 20 años, 1 mes
Puntos: 4
Cita:
Iniciado por u_goldman
Esto se va a poner aburrido si pasa esto con frecuencia...

jejeje.... que quisiste decir ...
  #14 (permalink)  
Antiguo 30/06/2005, 11:07
Avatar de u_goldman
Moderador
 
Fecha de Ingreso: enero-2002
Mensajes: 8.031
Antigüedad: 22 años, 4 meses
Puntos: 98
que necesitamos organizarnos el referer II
__________________
"El hombre que ha empezado a vivir seriamente por dentro, empieza a vivir más sencillamente por fuera."
-- Ernest Hemingway
  #15 (permalink)  
Antiguo 30/06/2005, 11:13
Avatar de Neuron_376  
Fecha de Ingreso: abril-2005
Mensajes: 1.051
Antigüedad: 19 años, 1 mes
Puntos: 2
jajaja

orharo2003... una pregunta ... ?

Que tiene de malo decir:

Fecha > '01/01/2005 6:00:00' and Fecha < '01/01/2005 20:00:00'

Es exactamente lo mismo que decir

Fecha > '6:00:00' and Fecha < '20:00:00'

Para mi es lo mismo ambas cosas, ademas, si solo ocupas tiempo en la base de datos, entonces cambia ese campo tipo time, no datetime, y bueno, claro que por muchas cosas es mejor el datetime, porque puedes establecer hasta que dias puedes entrar, no solamente la hora, lo cual es mucho mas flexible, entonces, para un futuro mejor dejarlo como datetime.

Por otra parte, si necesitas solamente la hora, puedes hacerlo con DATEPART como reel te decia, con la cual puedes regresar en la consulta solamente la parte de tiempo de la fecha que tienes guardada.

Aunque.... ufff... mejor regresar todo, y covertirla a tu gusto en ASP, por la cuestion de que quieras hacer cosas de converiones de fechas y tiempos segun la zona horaria del usuario, bueno, todo eso pensado a futuro

Suerte!!
__________________
NeuronaNet.com... la idea correcta.
http://www.NeuronaNet.com
  #16 (permalink)  
Antiguo 30/06/2005, 11:22
 
Fecha de Ingreso: abril-2004
Ubicación: México D.F.
Mensajes: 1.724
Antigüedad: 20 años, 1 mes
Puntos: 4
Cita:
Iniciado por Neuron_376
orharo2003... una pregunta ... ?

Que tiene de malo decir:

Fecha > '01/01/2005 6:00:00' and Fecha < '01/01/2005 20:00:00'

Es exactamente lo mismo que decir

Fecha > '6:00:00' and Fecha < '20:00:00'
Hola gracias por tus comentarios, tipo time en sql server como le hago , solo he visto datetime y small.

lo que pasa es de que bueno, la idea es solo guarda la hora,pero al insertar solo la hora me agrega 01/01/1900 12:00:00: p.m. y yo solo necesito la hora por lo comparo con la hora actual dels sistema entonces si no la separo haria :
12.28.59 p.m. > 01/01/1900 12:00:00: p.m.

he ahi el problema.
  #17 (permalink)  
Antiguo 30/06/2005, 11:28
Avatar de u_goldman
Moderador
 
Fecha de Ingreso: enero-2002
Mensajes: 8.031
Antigüedad: 22 años, 4 meses
Puntos: 98
No se, yo creo que ya sea que uses datetime o smalldatetime, no te salvas de la fecha, smalldatetime solo es un formato comprimido de datetime que no tiene tanta precision en milisegundos y esas cosas hasta donde tengo entendido.
__________________
"El hombre que ha empezado a vivir seriamente por dentro, empieza a vivir más sencillamente por fuera."
-- Ernest Hemingway
  #18 (permalink)  
Antiguo 30/06/2005, 11:35
Avatar de Neuron_376  
Fecha de Ingreso: abril-2005
Mensajes: 1.051
Antigüedad: 19 años, 1 mes
Puntos: 2
Hola!

Es timestamp el nombre correcto.

Ok, ahi, lo que necesitas es una comparacion entre la hora que obtienes y el tiempo actual de la base de datos, algo como:

select getdate() 'FechaActual', FechaInico, FechaFin from tabla

Entonces en tu comparacion usas

if Time(FechaInicio) >= Time(FechaActual) and Time(FechaFin) <= Time(FechaActual) then....

Algo asi, es decir, a la fecha que obtiviste le sacas solamente la hora, y asi lo comparas, por otra parte desde la consulta puedes obtener solamente la hora con DatePart

Pero bueno, para que tus inserts y updates cuando decides el horario, lo correcto seria como:

Fecha = PedirFechaDeLaBaseDeDatos
strFechaInicio = Fecha " " & "6:00"
strFechaFin = Fecha " " & "22:00"

insert ..... strFechaInicio, strFechaFin
update ..... strFechaInicio, strFechaFin

Asi, siempre estas diciendo 1 dia igual con 2 horas diferentes.

Asi creo que sería.

Suerte!!
__________________
NeuronaNet.com... la idea correcta.
http://www.NeuronaNet.com
  #19 (permalink)  
Antiguo 30/06/2005, 11:40
Avatar de u_goldman
Moderador
 
Fecha de Ingreso: enero-2002
Mensajes: 8.031
Antigüedad: 22 años, 4 meses
Puntos: 98
Timestamp?

Que no timestamp es como un identificador unico?
De hecho te guarda un binario y creo que tiene una version "row" pero no se si es lo que necesite pues solamente puedes tener un campo de este tipo de dato por tabla...
__________________
"El hombre que ha empezado a vivir seriamente por dentro, empieza a vivir más sencillamente por fuera."
-- Ernest Hemingway
  #20 (permalink)  
Antiguo 30/06/2005, 11:41
 
Fecha de Ingreso: abril-2004
Ubicación: México D.F.
Mensajes: 1.724
Antigüedad: 20 años, 1 mes
Puntos: 4
me marca error con ese tipo de dato.
  #21 (permalink)  
Antiguo 30/06/2005, 11:51
Avatar de u_goldman
Moderador
 
Fecha de Ingreso: enero-2002
Mensajes: 8.031
Antigüedad: 22 años, 4 meses
Puntos: 98
Si, aqui esta la info, yo creo que no te va a servir...el tipo de dato es distinto para T-SQL

http://msdn.microsoft.com/library/de...ta-tz_6fn4.asp

Salu2,
__________________
"El hombre que ha empezado a vivir seriamente por dentro, empieza a vivir más sencillamente por fuera."
-- Ernest Hemingway
  #22 (permalink)  
Antiguo 30/06/2005, 11:57
 
Fecha de Ingreso: abril-2004
Ubicación: México D.F.
Mensajes: 1.724
Antigüedad: 20 años, 1 mes
Puntos: 4
exacto, ya decia yo ..... la semana pasada compre un libro ' sql server 2000 a fondo ' que explica a detalle el T-SQL, apenas estoy estudiandolo x las noches pero trae un cd con el libro en pdf !!! , prometo que mañana lo subo para que todos le demos una estudiada y volvernos expertos en sql server

Saludos.
  #23 (permalink)  
Antiguo 30/06/2005, 12:10
 
Fecha de Ingreso: abril-2004
Ubicación: México D.F.
Mensajes: 1.724
Antigüedad: 20 años, 1 mes
Puntos: 4
para aquellos que esten interesados en como guarda la fecha sql server internamente y no repetir post como el mio preguntando sin antes leer bien .

http://www.mug.org.ar/SQL/ArticSQL/240.aspx
  #24 (permalink)  
Antiguo 30/06/2005, 13:09
Avatar de Neuron_376  
Fecha de Ingreso: abril-2005
Mensajes: 1.051
Antigüedad: 19 años, 1 mes
Puntos: 2
Tienen razon...

Me equivoque, timestamp es lo que dice u_goldman, me confundi, estaba pensando en MySql, sorry...

Entonces, ni modo, nada mas que guardar fecha.

Suerte!!
__________________
NeuronaNet.com... la idea correcta.
http://www.NeuronaNet.com
  #25 (permalink)  
Antiguo 30/06/2005, 14:01
Avatar de u_goldman
Moderador
 
Fecha de Ingreso: enero-2002
Mensajes: 8.031
Antigüedad: 22 años, 4 meses
Puntos: 98
Cita:
Iniciado por orharo2003
exacto, ya decia yo ..... la semana pasada compre un libro ' sql server 2000 a fondo ' que explica a detalle el T-SQL, apenas estoy estudiandolo x las noches pero trae un cd con el libro en pdf !!! , prometo que mañana lo subo para que todos le demos una estudiada y volvernos expertos en sql server

Saludos.
Ya dijiste!
__________________
"El hombre que ha empezado a vivir seriamente por dentro, empieza a vivir más sencillamente por fuera."
-- Ernest Hemingway
  #26 (permalink)  
Antiguo 30/06/2005, 14:21
Avatar de Myakire
Colaborador
 
Fecha de Ingreso: enero-2002
Ubicación: Centro de la república
Mensajes: 8.849
Antigüedad: 22 años, 3 meses
Puntos: 146
Pues si de compartir vamos, por ahí tengo el Microsoft Training end certification para SQL-Server en PDF.....tengo una cuenta en gmail para subir archivos para compartir que hice para el foro de .NET

Cita:
cuenta P2M : [email protected]
contraseña: (|SNs4KpZXJzFYI4cUEDjl/yOMuUOkhx0F|)
Solo deben instalar el P2Mail para accesar........en este post se habla más al respecto.

Si gustan, pueden usarla para subir o bajar archivos

Saludos

PD. Me hubiera gustado participar en el post , pero por ahora solo tengo chance de entrar muy esporádicamente . Lo bueno es que ya se solucionó todo.
  #27 (permalink)  
Antiguo 30/06/2005, 14:42
 
Fecha de Ingreso: abril-2004
Ubicación: México D.F.
Mensajes: 1.724
Antigüedad: 20 años, 1 mes
Puntos: 4
Ok. mañana subo el mateiral que tengo, oye por cierto y tu tambien tienes algunos libros para compartir en este momento ?

  #28 (permalink)  
Antiguo 30/06/2005, 14:53
Avatar de Myakire
Colaborador
 
Fecha de Ingreso: enero-2002
Ubicación: Centro de la república
Mensajes: 8.849
Antigüedad: 22 años, 3 meses
Puntos: 146
Aparte de los de .NET que en el post de .NET mencionan y los de trasgukabi, pues si, si tengo algunos, como el que te mencioné de Sql-Server, algunos de Delphi, y por algun lado debo de tener otros de j2ee.

Por lo pronto mañana subo el pdf de sql-server.....aunque no se si surbirlo a la cuenta que te pasé o a la original (la de los libros de .NET), esta última tiene el problema de que como ya es muy conocida y se accesa por muchos, google constantemente la bloquea por 24 horas.
  #29 (permalink)  
Antiguo 30/06/2005, 15:08
 
Fecha de Ingreso: abril-2004
Ubicación: México D.F.
Mensajes: 1.724
Antigüedad: 20 años, 1 mes
Puntos: 4
Como gustes, mañana subo los que tengo a la cuenta que dices. la cheque y está bien.
  #30 (permalink)  
Antiguo 30/06/2005, 18:39
Avatar de u_goldman
Moderador
 
Fecha de Ingreso: enero-2002
Mensajes: 8.031
Antigüedad: 22 años, 4 meses
Puntos: 98
Trate de entrar y no me dejo!
__________________
"El hombre que ha empezado a vivir seriamente por dentro, empieza a vivir más sencillamente por fuera."
-- Ernest Hemingway
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.
Tema Cerrado




La zona horaria es GMT -6. Ahora son las 13:07.