ayuda con una instruccion sql

10/06/2005 - 23:07 por Eliecer Nicolas Criales Mejia | Informe spam
Select ka_nl_movimiento,ka_ni_fuente,n_numero_documento,;
ka_nl_tercero,d_fecha_documento,Sc_anulado,Sc_impreso,;
sv_observaciones,Sc_generado,Sc_remision,Sc_facturado,Sc_avisar;
From Movimientos;
Order By ka_nl_movimiento;
Where d_fecha_documento = {d{'09/06/2005´}}

exactamente quisiera saber en el where como como referencia al año que yo
desee.


gracias por la colaboración.




Cordialmente,




Eliécer Nicolas Criales Mejía
Analista - Programador
Marquillas S.A.
Tel 305-04-04 Ext. 131

Preguntas similare

Leer las respuestas

#1 Isaias
11/06/2005 - 00:59 | Informe spam
Where year(d_fecha_documento) = 2005
Respuesta Responder a este mensaje
#2 Alejandro Mesa
11/06/2005 - 14:03 | Informe spam
Isaias,

Aunque esta solucion sea la mas logica, no es la optima, pues sql server no
reconoce esta expresion como un argumento de busqueda y por lo tanto no hara
un uso optimo de los indices en caso, por ejemplo, de que existiera alguno
por "d_fecha_documento". Preferible usar este patron:

...
Where d_fecha_documento >= '20050101' and d_fecha_documento < '20060101'


Ejemplo:

use northwind
go

exec sp_helpindex 'dbo.orders'
go

set showplan_text on
go

select
orderid,
orderdate,
customerid
from
dbo.orders
where
year(orderdate) = 1999
go

select
orderid,
orderdate,
customerid
from
dbo.orders
where
orderdate >= cast('19990101' as datetime) and orderdate < cast('20000101'
as datetime)
go

set showplan_text off
go

Fijate que en la primera sentencia sql server hace un scan del indice
clustered pk_orders y en la segunda hace un index seek en el indice
dbo.orders.orderdate.


AMB

"Isaias" wrote:


Where year(d_fecha_documento) = 2005
Respuesta Responder a este mensaje
#3 Maxi
11/06/2005 - 15:50 | Informe spam
Hola, como te ha comentado Ale, la solucion mas logica es la menos optima de
todas :( que hago yo en estos casos.

Algo asi como

use Northwind
Go

IF OBJECT_ID('PA_BUSQUEDA') IS NOT NULL
DROP PROC PA_BUSQUEDA
GO

CREATE PROC PA_BUSQUEDA @AÑO CHAR(4) AS

DECLARE @FECHA_1 DATETIME
DECLARE @FECHA_2 DATETIME

SET @FECHA_1 = @AÑO + '0101'
SET @FECHA_2 = CONVERT(CHAR(4),CONVERT(INT,@AÑO) + 1) + '0101'

select * from Orders WHERE Orderdate >=@fecha_1 and orderdate < @fecha_2

Go


Exec PA_busqueda '1997'




Maxi - Buenos Aires - Argentina
Desarrollador 3 Estrellas

Msn_messager:
mail: Maxi.da[arroba]gmail.com

"Eliecer Nicolas Criales Mejia" escribió
en el mensaje news:
Select ka_nl_movimiento,ka_ni_fuente,n_numero_documento,;
ka_nl_tercero,d_fecha_documento,Sc_anulado,Sc_impreso,;
sv_observaciones,Sc_generado,Sc_remision,Sc_facturado,Sc_avisar;
From Movimientos;
Order By ka_nl_movimiento;
Where d_fecha_documento = {d{'09/06/2005´}}

exactamente quisiera saber en el where como como referencia al año que yo
desee.


gracias por la colaboración.




Cordialmente,




Eliécer Nicolas Criales Mejía
Analista - Programador
Marquillas S.A.
Tel 305-04-04 Ext. 131

Respuesta Responder a este mensaje
#4 Eliecer Nicolas Criales Mejia
13/06/2005 - 17:37 | Informe spam
muchas gracias a todos por la colaboración.


"Alejandro Mesa" escribió en el
mensaje news:
Isaias,

Aunque esta solucion sea la mas logica, no es la optima, pues sql server
no
reconoce esta expresion como un argumento de busqueda y por lo tanto no
hara
un uso optimo de los indices en caso, por ejemplo, de que existiera alguno
por "d_fecha_documento". Preferible usar este patron:

...
Where d_fecha_documento >= '20050101' and d_fecha_documento < '20060101'


Ejemplo:

use northwind
go

exec sp_helpindex 'dbo.orders'
go

set showplan_text on
go

select
orderid,
orderdate,
customerid
from
dbo.orders
where
year(orderdate) = 1999
go

select
orderid,
orderdate,
customerid
from
dbo.orders
where
orderdate >= cast('19990101' as datetime) and orderdate < cast('20000101'
as datetime)
go

set showplan_text off
go

Fijate que en la primera sentencia sql server hace un scan del indice
clustered pk_orders y en la segunda hace un index seek en el indice
dbo.orders.orderdate.


AMB

"Isaias" wrote:


Where year(d_fecha_documento) = 2005
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida