Array
(
)

Sql com datas

Nasguone
   - 14 mar 2006

Olá boa noite a todos... tenho om script de sql para usar datas como parametros:

select * from tabela
where apont_date = cast(:data as datetime )
order by apont_date

o problema e que dá uns paus loucos de vez em quando......Alguem tem algum exemplo mais pratico para usar datas como parametros?

Grato pela atenção
E.C.S


Martins
   - 14 mar 2006


Citação:
Olá boa noite a todos... tenho om script de sql para usar datas como parametros:

select * from tabela
where apont_date = cast(:data as datetime )
order by apont_date

o problema e que dá uns paus loucos de vez em quando......Alguem tem algum exemplo mais pratico para usar datas como parametros?

Grato pela atenção
E.C.S


O valor do seu parametro tem q ser sempre a data corrente?

Qual o seu Banco de Dados?


Nasguone
   - 14 mar 2006

Infelizmente sim.....dai o que eu fiz foi converter a datetime em string com o cast...mas não esta legal!


Martins
   - 14 mar 2006


Citação:
Infelizmente sim.....dai o que eu fiz foi converter a datetime em string com o cast...mas não esta legal!


Quais são os erros q ocorrem?

esse campo apont_date , é do tipo Date ou String?

#Código


Query.Close;
Query.Sql.Clear;
Query.Sql.Add(´select * from tabela
where apont_date = :data order by apont_date´);
Query.Sql.ParamByName(´data´).AsDateTime := Now;
Query.Open;


Boa sorte!


Nasguone
   - 14 mar 2006

E do tipo date
valeu pelo codigo eu implementei este :
begin
Close;
SQL := ´select * from Apontados where apont_data between :datainicial´;
´ParamByName(´datainicial´).asDate := Now´;
Open;
end;


Adriano Santos
   - 14 mar 2006


Citação:

Citação:
Infelizmente sim.....dai o que eu fiz foi converter a datetime em string com o cast...mas não esta legal!


Quais são os erros q ocorrem?

esse campo apont_date , é do tipo Date ou String?

#Código


Query.Close;
Query.Sql.Clear;
Query.Sql.Add(´select * from tabela
where apont_date = :data order by apont_date´);
Query.Sql.ParamByName(´data´).AsDateTime := Now;
Query.Open;


Boa sorte!

Realmente, a forma que o Martins passou é a mais simples e funciona perfeitamente. Só tenho curiosidade em saber qual o banco de dados.


Nasguone
   - 14 mar 2006

Os erros que ocorrem são do tipo campo apont_data não e datetime ´ converta para string.....!!!!!
Erro e muito estranho pq da de vez em quando no meio da operação...de principio pensei que era por modo de parametros vazios mas não é!! mudei o sql como acima, funciona mas perdi rendimento principalmente em consultas com mais de 35.000 registros

O SQL e um 2000 - mas creio que não e nada com ele e sim com o script que estou aplicando.


Martins
   - 15 mar 2006


Citação:
Os erros que ocorrem são do tipo campo apont_data não e datetime ´ converta para string.....!!!!!
Erro e muito estranho pq da de vez em quando no meio da operação...de principio pensei que era por modo de parametros vazios mas não é!! mudei o sql como acima, funciona mas perdi rendimento principalmente em consultas com mais de 35.000 registros

O SQL e um 2000 - mas creio que não e nada com ele e sim com o script que estou aplicando.

:(

Já q houve perda de performance devido ao parametro ser carregado com dados externos aos BD, vc poderia nos mostrar a DDL de sua base / tabela, para que possamos analisar?

Seu banco é SQL Server 2000, tudo bem, agora post a estrutura de sua tabela.

:wink:


Nasguone
   - 15 mar 2006

select a.* from KD_VIEW_APONTAMENTO a
INNER JOIN KD_VIEW_PROXIMA_OPERACAO_APONTAR b
ON A.APONT_PROD_KEY = b.APONT_PROD_KEY
and A.APONT_SEQ = B.APONT_SEQ AND A.APONT_KEY = B.APONT_KEY
where apont_date = cast(:datdia as datetime )
and
apont_status is not null
order by apont_date


Tudo que preciso e que me traga apenas os registros apontados no dia
busco isso fazendo o parametros datdia receber now..


Paullsoftware
   - 15 mar 2006


Citação:

select a.* from KD_VIEW_APONTAMENTO a
INNER JOIN KD_VIEW_PROXIMA_OPERACAO_APONTAR b
ON A.APONT_PROD_KEY = b.APONT_PROD_KEY
and A.APONT_SEQ = B.APONT_SEQ AND A.APONT_KEY = B.APONT_KEY
where apont_date = cast(:datdia as datetime )
and
apont_status is not null
order by apont_date


Tudo que preciso e que me traga apenas os registros apontados no dia
busco isso fazendo o parametros datdia receber now..



Citação:
where apont_date = cast(:datdia as datetime )

não seria apenas Date???