Select días domingos

03/01/2006 - 16:06 por Fabián | Informe spam
Hola,
En una consulta adhoc tengo que seleccionar los prestadores que han atendido
los días domingos.
En la tabla esto se almacena en un campo FechaAutorizacion y es datetime
Hay alguna forma de poder realizar dicha consulta?

Saludos
Fabián

Preguntas similare

Leer las respuestas

#1 Rubén Vigón
03/01/2006 - 16:17 | Informe spam
Hola Fabián,

Sólo tienes que usar «DATEPART» junto a «dw»; por ejemplo:

SELECT * FROM Tabla WHERE DATEPART(dw, FechaAutorizacion) = 7

Por cierto, ten en cuenta que:

[...] La parte de la fecha weekday (dw) devuelve un número que corresponde al día de la semana, por ejemplo: Domingo = 7, Sábado = 6. El número que produce la parte de la fecha weekday depende del valor establecido por «SET DATEFIRST», que indica el primer día de la semana

[...] La parte de la fecha week (wk, ww) refleja los cambios realizados en SET DATEFIRST. El 1 de enero de cualquier año define el número de inicio para la parte de la fecha week, por ejemplo: DATEPART(wk, 'Jan 1, xxxx') = 1, donde xxxx es cualquier año

Un saludo!

Rubén Vigón
Microsoft MVP Visual Basic
http://vigon.mvps.org
Respuesta Responder a este mensaje
#2 Alejandro Mesa
03/01/2006 - 16:22 | Informe spam
Fabián,

select *
from t1
where datename(weekday, fecha) = 'Domingo'
go

Esta solucion evitara que sql server haga un uso adecuado de los indices, en
caso de existir alguno por esta columna.

Si tuvieses una tabla "calendario", pudieras crear un indice por [fecha] y
[dia_semana] y ver si sql server escoje mejor plan de ajecucion.

select a.*
from t1 as a inner join calendario as b a.fecha = b.fecha and b.dia_semana =
'Domingo'
go

Why should I consider using an auxiliary calendar table?
http://www.aspfaq.com/show.asp?id%19


AMB

"Fabián" wrote:

Hola,
En una consulta adhoc tengo que seleccionar los prestadores que han atendido
los días domingos.
En la tabla esto se almacena en un campo FechaAutorizacion y es datetime
Hay alguna forma de poder realizar dicha consulta?

Saludos
Fabián

Respuesta Responder a este mensaje
#3 Fabián
03/01/2006 - 16:25 | Informe spam
Muchas gracias a ambos por el consejo.
Saludos cordiales

"Alejandro Mesa" escribió:

Fabián,

select *
from t1
where datename(weekday, fecha) = 'Domingo'
go

Esta solucion evitara que sql server haga un uso adecuado de los indices, en
caso de existir alguno por esta columna.

Si tuvieses una tabla "calendario", pudieras crear un indice por [fecha] y
[dia_semana] y ver si sql server escoje mejor plan de ajecucion.

select a.*
from t1 as a inner join calendario as b a.fecha = b.fecha and b.dia_semana =
'Domingo'
go

Why should I consider using an auxiliary calendar table?
http://www.aspfaq.com/show.asp?id%19


AMB

"Fabián" wrote:

> Hola,
> En una consulta adhoc tengo que seleccionar los prestadores que han atendido
> los días domingos.
> En la tabla esto se almacena en un campo FechaAutorizacion y es datetime
> Hay alguna forma de poder realizar dicha consulta?
>
> Saludos
> Fabián
>
Respuesta Responder a este mensaje
#4 Alejandro Mesa
03/01/2006 - 16:29 | Informe spam
Rubén Vigón,

[...] La parte de la fecha week (wk, ww) refleja los cambios realizados en SET > DATEFIRST. El 1 de enero de cualquier año define el número de inicio para la
parte de la fecha week, por ejemplo: DATEPART(wk, 'Jan 1, xxxx') = 1, donde
xxxx es cualquier año



Por eso mismo no recomiendo el uso de DATEPART, sino usar DATENAME.

Ejemplo:

use northwind
go

set datefirst 1
go

select datepart(dw, '20060101')
select datename(dw, '20060101')

set datefirst 2
go

select datepart(dw, '20060101')
select datename(dw, '20060101')
go

Como vez, 'Domingo' es 'Domingo' sin importar que dia es considerado el
primero de la semana.


AMB


"Rubén Vigón" wrote:

Hola Fabián,

Sólo tienes que usar «DATEPART» junto a «dw»; por ejemplo:

SELECT * FROM Tabla WHERE DATEPART(dw, FechaAutorizacion) = 7

Por cierto, ten en cuenta que:

[...] La parte de la fecha weekday (dw) devuelve un número que corresponde al día de la semana, por ejemplo: Domingo = 7, Sábado = 6. El número que produce la parte de la fecha weekday depende del valor establecido por «SET DATEFIRST», que indica el primer día de la semana

[...] La parte de la fecha week (wk, ww) refleja los cambios realizados en SET DATEFIRST. El 1 de enero de cualquier año define el número de inicio para la parte de la fecha week, por ejemplo: DATEPART(wk, 'Jan 1, xxxx') = 1, donde xxxx es cualquier año

Un saludo!

Rubén Vigón
Microsoft MVP Visual Basic
http://vigon.mvps.org

email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida