SQL Server - Manejo de fecha

 
Vista:

Manejo de fecha

Publicado por Sergio Montoya (3 intervenciones) el 06/09/2015 15:21:39
Buen dia Señores,
Estoy realizando una migración de una base de datos de Mysql a SQL, el tema es que en mysql podía definir que x elemento fecha duraba 24:00:00 (se definía en la aplicación como 1.00:00:00), en sql no he podido definir encontrar como se maneja, pues definir el campo como duración de 24:00:00 genera error al igual que 1.00:00:00,
Les agradezco si me pueden colaborar.
Saludos.
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
Imágen de perfil de Isaias
Val: 3.250
Oro
Ha mantenido su posición en SQL Server (en relación al último mes)
Gráfica de SQL Server

Manejo de fecha

Publicado por Isaias (4558 intervenciones) el 07/09/2015 22:07:10
Por ahí alguien pregunto sobre el manejo de fechas, yo hice una aportación muy extensa de como se manejan las fechas en SQL Server, si no la encuentras, me dices y la vuelvo a publicar.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
-1
Comentar
sin imagen de perfil
Val: 86
Ha disminuido su posición en 2 puestos en SQL Server (en relación al último mes)
Gráfica de SQL Server

Manejo de fecha

Publicado por Rafael (110 intervenciones) el 08/09/2015 08:38:55
Creo que esto no es posible en SQL server dado que TODOS los TIPO Datetime duran por definicion 24 hrs.
Que empiezan en 00:00:00.00 y terminan en 23:59:59.99 ahora

Cuando dices que determinado objeto en MySQL dura 24:00:00 a que te refieres??? quieres sumar 24 horas?? o puedes poner la Instruccion en MySQL que usabas???

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

Manejo de fecha

Publicado por Sergio Montoya (3 intervenciones) el 08/09/2015 20:26:03
Efectivamente, tengo una fecha que inicia en 00:00:00 y le debo sumar exactamente 24:00:00, te explico, estoy sumando tiempos marcados por empleados, si un empleado marca a las 22:00 hasta las 02:000, se va a perder una fraccion de tiempo con el formato 23:59:59.
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
Imágen de perfil de Isaias
Val: 3.250
Oro
Ha mantenido su posición en SQL Server (en relación al último mes)
Gráfica de SQL Server

Manejo de fecha

Publicado por Isaias (4558 intervenciones) el 08/09/2015 23:30:40
UN SEGUNDO !!!, se "perdería" UN SEGUNDO y no creo que se pierda, el aplicativo ni siquiera alcanzaría a guardarlo
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
sin imagen de perfil
Val: 86
Ha disminuido su posición en 2 puestos en SQL Server (en relación al último mes)
Gráfica de SQL Server

Manejo de fecha

Publicado por Rafael (110 intervenciones) el 09/09/2015 08:50:16
A ver no se perderia por que el formato fecha realmente incluye el dia y 7 decimales a los segundos.

De 0001-01-01 00:00:00.0000000 a 9999-12-31 23:59:59.9999999 (en UTC)

Creo mas bien que tienes un problema de concepto:

1. En MYSQL seguramente estas usando un tipo de dato TIME, lo que te permite hacer lo que estas haciendo.
2. En SQL Server tambien existe pero la limitante es su formato que es hh:mm:ss[.nnnnnnn] por lo que no puede contemplar el dia extra que estas manejando en MySQL

Luego entonces... veamos para obtener la diferencia entre la entrada y la salida, en SQL Server y obtener el tiempo transcurrido en DIAS, HORAS, MINUTOS y SEGUNDOS, necesitas algo similar a esto:
1
2
3
4
5
6
7
8
9
10
SELECT Entrada
     , Salida
     , convert(varchar(5),DateDiff(s, Entrada, Salida)/86400) +
       ' ' + convert(varchar(5),DateDiff(s, Entrada, Salida)/3600%24) +
       ':' + convert(varchar(5),DateDiff(s,Entrada, Salida)%3600/60) +
       ':' + convert(varchar(5),(DateDiff(s, Entrada, Salida)%60) )
       as [dd hh:mm:ss]
From   (SELECT convert(datetime, '2015-09-08 10:05:13.56', 21) as Entrada
     , convert(datetime, '2015-09-09 12:18:54.25', 21) as
Salida) as Q1

Estoy suponiendo que entra la mañana de ayer y sale a medio dia de hoy resultado:
Imagen

Ya me contaras si te sirve o no...
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

Manejo de fecha

Publicado por Sergio Montoya (3 intervenciones) el 09/09/2015 17:41:12
Buen dia,
Probare las fechas poniendo los decimales, mira te explico que necesito completo,
digamos que yo cree una regla para un sistema que se llama festivo (esta aplica todo el dia, un dia domingo normal) en MYSQL lo manejaba diciendo inicia a las 00:00:00 duración 1.00:00:00 (Mysql lo hace perfecto) por ende si una persona trabaja digamos de 22:00:00 hasta las 02:00:00 de la madrugada siguiente yo cuento que trabaja exactamente 2 horas festivas, cosa en con sql con el formato actual me reporta 1.9.,
el otro punto es que un turno puede iniciar a las 18:00 de hasta las 06:00 del siguiente dia, pero ese turno tiene un descanso a las 03:00 de la madrugada ( en mysql le decía que la hora de inicio era 1.03:00:00 ( un dia y 3 horas mas tarde), tampoco lo he podido lograr en SQL.
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
Imágen de perfil de Isaias
Val: 3.250
Oro
Ha mantenido su posición en SQL Server (en relación al último mes)
Gráfica de SQL Server

Manejo de fecha

Publicado por Isaias (4558 intervenciones) el 09/09/2015 23:25:25
Leo y leo y leo y no comprendo nada !!!
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