SQL Server - Determinar dias feriados (sabado y domingo)

 
Vista:

Determinar dias feriados (sabado y domingo)

Publicado por kinetic_brain (67 intervenciones) el 11/11/2010 17:46:48
Hola Maestros

como puedo determinar los feriados, solamente los dias sabado y domingo, para utilizarlos en un where para poder filtrar.

por favor.
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:Determinar dias feriados (sabado y domingo)

Publicado por kinetic_brain (67 intervenciones) el 11/11/2010 18:08:14
Olvidaba mensionar, las fechas se encuentran en formato aaaammdd
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: 4
Ha disminuido su posición en 43 puestos en SQL Server (en relación al último mes)
Gráfica de SQL Server

RE:Determinar dias feriados (sabado y domingo)

Publicado por Leonardo Josué (79 intervenciones) el 11/11/2010 21:08:14
Buenas tardes kinetic_brain.

Puedes utilizar la función DATEPART enviando como parámetro "dw" o day of week - día de la semana:

SELECT DATEPART(dw, getdate())
o
select datepart(dw, '20101111')

Este ejemplo re debería regresar un 5 de acuerdo a la siguiente tabla
Si es Domingo -> 1
Si es Lunes -> 2
Si es Martes -> 3
Si es Miércoles -> 4
Si es Jueves -> 5
Si es Viernes -> 6
Si es Sábado -> 7

Sólo hay que tener cuidado con la propiedad DATEFIRST (puedes leer un poco más en tu ayuda en linea para ver el uso de esta propiedad)

saludos
Leo.
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:Determinar dias feriados (sabado y domingo)

Publicado por kinetic_brain (67 intervenciones) el 11/11/2010 21:18:35
Gracias Leonardo

consulta como lo debería hacer si necesito extraer todos los registros donde la fecha en formato aaaammdd sea sabado y domingo?

teoricamente necesito algo como esto aunque esta mal escrita la query:

CampoFecha esta en formato aaaammdd

select datepart(dw, 'CampoFecha') as fecha
from reclamos
where fecha in ('6','7')
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:Determinar dias feriados (sabado y domingo)

Publicado por Loría (56 intervenciones) el 11/11/2010 21:44:24
Buenos días Kinetic_brain.

Si te entiendo, prueba este SQL haber si te funciona:

SELECT * FROM reclamos
WHERE (DATEPART(dw,CampoFecha)=7) OR (DATEPART(dw,CampoFecha)=1)

Recuerda que el conteo de semana en SQL Server inicia desde domingo, por ende sábado y domingo serían 7 y 1 respectivamente.

Creo que no hay problemas con el formato de la fecha. Si lo hay indícanos.

Loría.
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:Determinar dias feriados (sabado y domingo)

Publicado por kinetic_brain (67 intervenciones) el 11/11/2010 21:55:45
Gracias Leonardo

Hice lo que me indicaste y me aparece el siguiente error:

Server: Msg 241, Level 16, State 1, Line 1
Syntax error converting datetime from character string.
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:Determinar dias feriados (sabado y domingo)

Publicado por Loría (56 intervenciones) el 11/11/2010 22:49:50
¿Podrías pasarnos exactamente el SQL que estás ejectuando y unos cuantos datos de la tabla a la que estas accesando?
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: 4
Ha disminuido su posición en 43 puestos en SQL Server (en relación al último mes)
Gráfica de SQL Server

RE:Determinar dias feriados (sabado y domingo)

Publicado por Leonardo Josué (79 intervenciones) el 11/11/2010 22:51:07
Hola de nuevo kinetic_brain:

El error que estás mencionando es porque estas tratando de convertir una fecha no válida.

Vamos por partes... ¿tu campo CampoFecha de qué tipo es? puedo suponer que se trata de un campo tipo cadena, por lo que es posible que algunas fechas no cumplan con el formato que estás mencionando de aaaammdd.

te recomiendo que verifiques primero así

SELECT * FROM TuTabla WHERE ISDATE(CampoFecha) = 0

Esto te regresaría todos los registros que no cumplan con el formato aaaammdd, podrías corregirlos o simplemente filtrarlos así:

Select * from (
SELECT * FROM reclamos
WHERE isdate(Campofecha) = 1
) T
where
DATEPART(dw,CampoFecha) in (7,1).

Con respecto a lo que te comenta Loría de que el conteo de semana en SQL Server inicia desde domingo, por ende sábado y domingo serían 7 y 1 respectivamente puede que no sea así, por eso en el primer post que te puse te comento acerca del parámetro DATEFIRST. con este parámetro tú puedes especificarle qué día de la semana quieres que se asigne al 1, si es que no quieres que quede asignado al domingo, por defecto es como dice Loría, pero hay que tener cuidado al respecto

Saludos.
Leo.
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:Determinar dias feriados (sabado y domingo)

Publicado por kinetic_brain (67 intervenciones) el 16/11/2010 13:57:10
Muchas gracias Leonardo y Loría me ha funcionado a la perfecciones, gracias por su ayuda.

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:Determinar dias feriados (sabado y domingo)

Publicado por Migdaliz (1 intervención) el 17/09/2012 20:17:06
Buenas tardes es la primera vez que posteo y espero que me ayuden.
verán tengo un campo fecha, del cual deseo mandar alertas, digamos que la fecha dice "25/09/2012"
entonces necesito que la alerta me diga le quedan "8 dias para cancelar la letra", eso si me a salido, el detalle es que no se deben contar los sabados, domingos ni feriados. ejemplo:
hoy : 17/09/2012
fecha a vencer 25/09/12
entre hoy y fecha a vencer tenemos 8 días, pero el día 22/09/2012 y el dia 23/09/2012 son sabados y domingo respectivamente entonces la alerta tendrá que decir "Le quedan 6 dias para vencer la letra" como puedo hacer para que no tome en cuenta los días sábados, domingos, ni feriados?.... espero que me hallan podido comprender y me puedan ayudar.. de antemano le agradezco su ayuda.

PDT. Utilizo sqlserver 2008.
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:Determinar dias feriados (sabado y domingo)

Publicado por Guillermin (1 intervención) el 14/04/2019 01:56:44
Estimado Migdaliz
Yo haría un bucle (Cursor o while ) lo que prefieras
Debes ajustar si es dia feriado el inicial o no, pero eso ya es control de cada quien

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
Declare @MiFecha Varchar(20), @FechaVencimiento Varchar(20)
Set @MiFecha = GETDATE() -- Día de Hoy
Set @FechaVencimiento = (SELECT DATEADD(DAY,8,@MiFecha ))
 
While @MiFecha <> @FechaVencimiento
Begin
 
 If DATEPART(dw,@MiFecha) = 7
    Begin
             Set @FechaVencimiento = (SELECT DATEADD(DAY,1,@FechaVencimiento ))
    End
 
 If DATEPART(dw,@MiFecha) = 1
    Begin
             Set @FechaVencimiento = (SELECT DATEADD(DAY,1,@FechaVencimiento ))
    End
 
Set @MiFecha = (SELECT DATEADD(DAY,1,@MiFecha ))
End
 
Select @FechaVencimiento
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