Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

rodrigofaria

Não tá retornando o registro...

Recommended Posts

Tô fazendo uma pesquisa simples com data. A pessoa preenche o campo "data" e monto ela assim:

 

data1 = SESSION("ano")&"/"&SESSION("mes")&"/"&SESSION("dia")

 

IsDate data1

 

Criei nesse formato pois é o formato SMALLDATETIME do SQL Server (yyyy-mm-dd hh:mm:ss)

 

A instrução SQL tá recebendo tudo certinho:

 

SELECT * FROM TblEsportes E , TblSite S WHERE E.CodSite=S.CodSite AND Dt = '2004/04/11' ORDER BY Cod DESC

 

O registro 11 de abril de 2004 exsite no Banco. Só que simplesmente não retorna nada (nem dá erro). O que estou fazendo de errado?

 

abs,

 

rodrigofaria

Compartilhar este post


Link para o post
Compartilhar em outros sites

tenta assimSELECT * FROM TblEsportes E , TblSite S WHERE E.CodSite=S.CodSite AND Dt = to_date('2004/04/11','yyyy/mm/dd') ORDER BY Cod DESC e otra,v c o código ta certo nas 2 tableas q tem codsite

Compartilhar este post


Link para o post
Compartilhar em outros sites

A consulta está certinha. Ainda assim não deu. Acho que ele não tá reconhecendo o campo data como data...Acrescentei as horas tb. Já fiz de todo o jeito:yyyy/mm/ddmm/dd/yyyyyyyy/mm/dd 00:00:00mm/dd/yyyy 00:00:00Ainda não tá dando certo. PELO AMOR DE DEUS....TÔ PIRANDO!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Qunado uso a função ISDate para a variável "data1" ela me retorna verdadeiro...

 

Sei que estou passando certo, com aspas simples para o campo data:

 

SELECT * FROM TblEsportes E , TblSite S WHERE E.CodSite=S.CodSite AND Dt='2004/04/21' ORDER BY Cod DESC

 

No Banco SQL Server 2000, pelo Query Analyser, o registro da data está assim:

 

Campo dt (SmallDateTime)

 

2004-04-21 15:23:00

 

Ou seja, o registro tá lá, mas não aparece p**** nenhuma...(obs. traço ou barra da na mesma)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara,acho q é pq você não está passando a hora junto,faça um teste,usa isso aqui e v c retorna alguma coisaSELECT * FROM TblEsportes E , TblSite S WHERE E.CodSite=S.CodSite AND Dt='2004-04-21 15:23:00' ORDER BY Cod DESC

Compartilhar este post


Link para o post
Compartilhar em outros sites

Diego, a estrutura SQL tá certinha. O úncio realcionamento entre as tableas é o campo CodSite, chave primária da TblSite e chave estrangeira da TblEsportes.O Campo Dt está na tabela TblEsportes, ela é iserida automaticamente pelo SQL Server através da função Getdate(), toda a vez que eu insiro uma notícia de esportes no Banco.Na variável data1 que eu crei, seu valor é obtido quando o usuário, na página de esportes, usando list boxes para dia , mes e ano, escolhe seu valor para pesquisa. Na página de pesquisa eu recebo os dados, junto tudo na variável data1 assim:dia = Replace(request.querystring("dia"), "'" , "''" )mes = Replace(request.querystring("mes"), "'" , "''" )ano = Replace(request.querystring("ano"), "'" , "''" )data1 = ano&"/"&mes&"/"&dia' Quando eu testo isDate(Data1) este me retorna verdadeiro, sem nenhum problema. No access estava funcionando perfeitamente, pois estava tratando a data como texto e me retornava os valores que eu queria sem nenhum problema, inclusive uqando eu fazia as comparações entre datas (data final e data incial). Só que no SQL Server, nem com a data inicial só está funcionando. Não me retorna nada!abs,rodrigofaria

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara no banco ela está assim né 22-04-2004 15:30:25? e você está mandando comparar com 22-04-2004, vai dar errado. Tenta pegar do banco apenas a data sem a hora.

Compartilhar este post


Link para o post
Compartilhar em outros sites

cara,o que eu estou querendo te dizer é q os seus 2 campos não contem as mesma informações. o campo data do getdate contém a hora,e o que você está passando como parametro n...entao tnta fazer o seguinte:SELECT * FROM TblEsportes E , TblSite S WHERE E.CodSite=S.CodSite AND TO_CHAR(Dt,'YYYY/MM/DD') = TO_CHAR('2004/04/11','DD/MM/YYYY') ORDER BY Cod DESC

Compartilhar este post


Link para o post
Compartilhar em outros sites

Descobri.Não sei se é a maneira maus lusitana de se fazer isso, mas está funcionando perfeitamente. Tive que acrescentar as horas na pesquisa. Eu monto da data inicial(data1) e final(data2) de pesquisa assim:data1 = ano&"/"&mes&"/"&diadata2 = ano2&"/"&mes2&"/"&dia2mask = "0/0/0"if data1 <> mask thenhorasi = "00:00:00"horasf = "23:59:59"data1 = ano&"/"&mes&"/"&dia&" "&horasidata11 = ano&"/"&mes&"/"&dia&" "&horasfend ifif data2 <> mask thenhorasi = "00:00:00"horasf = "23:59:59"data2 = ano2&"/"&mes2&"/"&dia2&" "&horasidata22 = ano2&"/"&mes2&"/"&dia2&" "&horasfend ifA consulta abaixo, por expemplo, ela engloba a data1 às 00:00:00Hs. e a data22 às 23:59:59Hs:SQL=" SELECT * FROM TblEsportes E , TblSite S "&_" WHERE E.CodSite=S.CodSite AND Dt BETWEEN '"&Data1&"' AND '"&Data22&"' ORDER BY Cod DESC "Ficaria assim:SELECT * FROM TblEsportes E , TblSite S WHERE E.CodSite=S.CodSite AND Dt BETWEEN '2004/03/01 00:00:00' AND '2004/08/21 23:59:59' ORDER BY Cod DESC Obrigado pela ajuda Diego e ASP.net...abs,rodrigofaria

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eae rodrigo,tipo...tenta faze uma coisa,tenta executa teu sql assim ó,com akele parametro em cima e v c funciona ai....posta resposta q fiquei curioso agora pra sabe c funça bem no sql server isso ;) flw

 

SET DATEFORMAT dmySELECT * FROM TABELAWHERE DATA BETWEEN '01.01.2001' AND '03.01.2001'

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.