Rango de fechas con intervalo en minutos
Publicado por andres (5 intervenciones) el 26/04/2019 05:38:02
Hola estimados miembros de la web del programador, es la primera vez que solicito ayuda por este medio. Espero no equivocarme de foro o algo por el estilo...sepan disculpar
El problema que planteo es el siguiente:
Estoy trabajando en un proyecto de turnos médicos y tengo problemas en el siguiente script de SqlServer 2014 con estos 4 intervalos en minutos (25, 35, 50 y 55 en el DATEADD) ya que necesito que comience a las 08:00 cada vez que cambie la Fecha de atención y eso no sucede.
Este script o Cte toma un intervalo entre 2 fechas y una hora de inicio y hora fin + el dia de la semana elegido.
Osea necesitaría por favor que estos 4 intervalos independientemente de que día de atención este seleccionado empiece con la hora almacenada en @fec_inicio cada vez que cambie la fecha.
script:
resultado con error:
resultado deseado:
Espero puedan ayudarme.. muchísimas gracias
andres
El problema que planteo es el siguiente:
Estoy trabajando en un proyecto de turnos médicos y tengo problemas en el siguiente script de SqlServer 2014 con estos 4 intervalos en minutos (25, 35, 50 y 55 en el DATEADD) ya que necesito que comience a las 08:00 cada vez que cambie la Fecha de atención y eso no sucede.
Este script o Cte toma un intervalo entre 2 fechas y una hora de inicio y hora fin + el dia de la semana elegido.
Osea necesitaría por favor que estos 4 intervalos independientemente de que día de atención este seleccionado empiece con la hora almacenada en @fec_inicio cada vez que cambie la fecha.
script:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
declare
@fec_inicio DateTime,
@fec_fin DateTime
SELECT @fec_inicio = '2019-04-25 08:00', @fec_fin = '2019-05-15 10:00'
;WITH FECHAS(fecha) AS (
SELECT @fec_inicio as fecha
UNION all
SELECT DATEADD(MINUTE,35, fecha) -- INTERVALO ENTRE CADA CONSULTA MEDICA
FROM FECHAS
WHERE fecha < @fec_fin
)
SELECT fecha from FECHAS
WHERE CONVERT(VARCHAR,fecha,108) between
CONVERT(VARCHAR,@fec_inicio,108) and
CONVERT(VARCHAR,@fec_fin,108)
and DATEPART(DW, fecha) = 3 --DIAS DE ATENCION: Lun:2, Mar:3, Mier:4, jue:5; vier:6, sab:7, dom:1
ORDER BY fecha
OPTION (Maxrecursion 0)
resultado con error:
resultado deseado:
Espero puedan ayudarme.. muchísimas gracias
andres
Valora esta pregunta
0