Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Consulta manejando fechas

0 views
Skip to first unread message

Omar Flores

unread,
May 25, 2004, 6:29:42 PM5/25/04
to
Que tal, Necesito ayuda para hecer la siguiente consulta:

De una tabla con un campo Nombre de tipo varchar y uno FechaNacimiento
de tipo datetime necesito seleccionar todos los registros que en
la fecha de nacimiento esten dentro del mes actual (el mes lo voy
a tomar de la fecha del sistema y lo quiero pasar como parámetro en una
aplicación Web) .

Por ejemplo

Alguien1 15/04/2004
Alguien2 15/05/2004
alguien3 15/05/2004

En este caso sólo sería:

Alguien2 15/05/2004

Ojalá y me puedan ayudar


Javier Loria

unread,
May 25, 2004, 6:27:33 PM5/25/04
to
Hola Omar:
Algo como:
=============
SELECT Nombre, FechaNacimiento
FROM Tabla
WHERE DATEPART(Month, GETDATE())=DATEPART(Month, FechaNacimiento)
=============
Saludos,


Javier Loria
Costa Rica
Se aprecia la inclusion de DDL (CREATE, INSERTS, etc.)
que pueda ser copiado y pegado al Query Analizer.
La version de SQL y Service Pack tambien ayuda.
Omar Flores <oa...@hotmail.com> escribio:

Maxi

unread,
May 25, 2004, 10:40:32 PM5/25/04
to
Hola Javier!! no se si es bueno hcaer ello ya que nuestro Motor no hara uso
de los indices :(

Lo que yo recomiendo es que dentro del Store tenga la logica y se pase como
variable y no usar funciones dentro de las querys, pero ojo es solo un
comentario, lo tuyo funciona muy bien :-)

--

Salu2

Maxi

Desarrollador 3 estrellas .NET
Buenos Aires - Argentina

MSN: Maxi_a...@msn.com

"Javier Loria" <nos...@nospam.com> escribió en el mensaje
news:%237tcBeq...@TK2MSFTNGP09.phx.gbl...

Javier Loria

unread,
May 26, 2004, 8:48:09 AM5/26/04
to
Hola Max:
Asi es, en este caso el SQL no usara indices casi nunca, ni cambiando la
sentencia, ni haciendola en procedimientos, ni llamandola directamente desde
el cliente, e incluso cambiando la sintaxis es muy es poco probable que se
usen indices.
La unica forma de lograr que se usen indices seria construyendo una
columna calculada Mes que sea la funcion DATEPART(Month, FechaNacimiento), y
construir un indice sobre esta columna. Aun asi por ser un indice poco
selectivo (1/12) es muy poco probable que se use, a menos que el indice sea
clustered, pero esto me parecio una solucion extrema. No obstante si Omar
tiene decenas de miles de filas y esta consulta se realiza con mucha
frecuencia y la considera muy lenta podria considerar esta solucion.
Por ultimo, en este caso yo no usaria stores, porque no se requiere
parametros, y aun cuando fueran necesarios una funcion in-line para poder
usarla como tabla. Una vista si tendria mas sentido, si se reutiliza en
otras consultas:
==========================
CREATE VIEW CumpleanosDelMes
AS

SELECT Nombre, FechaNacimiento
FROM Tabla
WHERE DATEPART(Month, GETDATE())=DATEPART(Month, FechaNacimiento)
==========================
Saludos,


Javier Loria
Costa Rica
Se aprecia la inclusion de DDL (CREATE, INSERTS, etc.)
que pueda ser copiado y pegado al Query Analizer.
La version de SQL y Service Pack tambien ayuda.

Maxi <max...@infovia.com.ar.sacame> escribio:


> Hola Javier!! no se si es bueno hcaer ello ya que nuestro Motor no
> hara uso de los indices :(
>
> Lo que yo recomiendo es que dentro del Store tenga la logica y se
> pase como variable y no usar funciones dentro de las querys, pero ojo
> es solo un comentario, lo tuyo funciona muy bien :-)
>
>
>
>

0 new messages