Ir para conteúdo

POWERED BY:

Arquivado

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

bimpercursso

Problemas com data

Recommended Posts

Tenho um sisteminha aqui que guarda o cadastro de cliente, ate ai beleza, ono banco ele grava a data de cadastro do cliente, ok

 

Em uma outra área do sistema ele faz relatorios, tipo o cliente que se dadastrou de uma data ate outra data, mas ele nao me retorna os registros, tenho certeza que é data, pois meu banco é sql server e nao consigo tarzedr os dados, veja

 

 

tenho uma função para tratar as datas

function convData(data_)				'response.write data_		'response.end					dia=datepart("d",data_)			mes=datepart("m",data_)			ano=datepart("yyyy",data_)			hora=datepart("h",data_)			minuto=datepart("n",data_)			segundo=datepart("s",data_)						dataUniversal=ano&"/"&mes&"/"&dia						convData=dataUniversal		end function

na hora do cadastro do clientes mando ele cadastrar a data com base nessa função, entao ele grava ano/mes/dia

 

 

na hora de faz o select entre as datas ele me retorna tipo assim

SELECT nome_cli, telefone_cli, email_cli, id_cli FROM tb_clientes WHERE dtCadastro_cli >= 20/05/2007 AND dtCadastro_cli <=20/05/2007 ORDER BY nome_cli ASC

mas olhando no sql as datas estao assim 2007-05-02, na pagina que fao o select uso o session.lcid = 1046, mas ano adianta, o qeu eu faço, alguam idea, ja to lokinho com isso.

Compartilhar este post


Link para o post
Compartilhar em outros sites

utilize between para pesquisa entre dois periodos. utilize um replace para trocar a / por - para ficar AAAA-MM-DD

Compartilhar este post


Link para o post
Compartilhar em outros sites

se o campo dataCadastro_cli estiver definido como datetime, faça o seguinte:WHERE dtCadastro_cli >= CONVERT(DATETIME,'20/05/2007',103) AND dtCadastro_cli <=CONVERT(DATETIME,'20/05/2007',103) ORDER BY nome_cli ASCesse comando CONVERT converte datas no formato 103 ou dd/mm/aaaa para DATETIME Se isso ajudar...

Compartilhar este post


Link para o post
Compartilhar em outros sites

jonathandj, veja meu response e o erro, o meu campo dtcadastro_cli já é de tipo smalldatetime no banco

 

SELECT nome_cli, telefone_cli, email_cli, id_cli FROM tb_clientes WHERE dtCadastro_cli between 05-05-2007 and 05-07-2007 ORDER BY nome_cli ASC -----------------------------------------------------------------------------------------------------------------------------------------------------------Microsoft OLE DB Provider for SQL Server error '80040e57' Arithmetic overflow error converting expression to data type smalldatetime. /adm/relatorio.asp, line 60

alguam ideia., pow isso é mutio simples, ma ta me tirando do serio ja

Compartilhar este post


Link para o post
Compartilhar em outros sites

você converteu errado, tem que ficar AAAA-MM-DD e pelo visto seu campo na tabela está como datetime, ai você vai ter que utilizar em conjunto a sugestão do rafaelso

em tese tem que montar assim

SELECT nome_cli, telefone_cli, email_cli, id_cli FROM tb_clientes WHERE dtCadastro_cli between CONVERT(DATETIME,'2007-05-05',103) and CONVERT(DATETIME,'2007-07-05',103) ORDER BY nome_cli ASC
acho que assim rola, testa ae

Compartilhar este post


Link para o post
Compartilhar em outros sites

tenta fazer assim.. q num tem erro:SELECT nome_cli, telefone_cli, email_cli, id_cli FROM tb_clientes WHERE dtCadastro_cli BETWEEN CONVERT(DATETIME,'20/05/2007',103) AND CONVERT(DATETIME,'20/05/2007',103) ORDER BY nome_cli ASC

Compartilhar este post


Link para o post
Compartilhar em outros sites

Utilizei o exemplo acima, fiz ate algumas alteraçoes depois para novos teste mas em nenhum teve sucesso,, o erro nao esta mais dando, mas nao esta exibindo minha lista de clientes, tipo , parace que nao tem nenhum cliente entre essas datas, mas olhando no banco existe, veja

 

SELECT nome_cli, telefone_cli, email_cli, id_cli FROM tb_clientes WHERE dtCadastro_cli between CONVERT(DATETIME,'2007-05-05',103) and CONVERT(DATETIME,'2007-07-05',103) ORDER BY nome_cli ASC

 

agora no banco

 

dt_cadastro_cli2007-07-02 00:00:00.000

Entao Rafalso, o erro nao da mais, mas nao exibe minha lista de clientes, se tiver algum ideia do que possa ser sera muito bem vindo, pois ja nao aguneto mais isso.

 

mas valeu pela ajuda

Compartilhar este post


Link para o post
Compartilhar em outros sites

CONVERT(DATETIME,'2007-05-05',,103) and CONVERT(DATETIME,'2007-07-05',103) ORDER BY nome_cli ASC

 

as datas em negrito não estão no formato certo, deixe elas como '05/05/2007'(dd/mm/aaaa e teste novamente

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tentei assim das duas formas

 

select * from tb_clientes where dtcadastro_cli between 05-05-2007 and 05-07-2007select * from tb_clientes where dtcadastro_cli between 2007-05-05 and 2007-07-05

mas nao rolou, nao exibe no meu sql, o que esta acontecendo

http://forum.imasters.com.br/public/style_emoticons/default/upset.gif

 

Tentei assim das duas formas

 

select * from tb_clientes where dtcadastro_cli between 05-05-2007 and 05-07-2007select * from tb_clientes where dtcadastro_cli between 2007-05-05 and 2007-07-05

mas nao rolou, nao exibe no meu sql, o que esta acontecendo

http://forum.imasters.com.br/public/style_emoticons/default/upset.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

você não utilizou a função para converter a data nesse seu teste. faça novamente

Compartilhar este post


Link para o post
Compartilhar em outros sites

parece que funcionou no ASP, mas preciso trocar essa expressao

 

"SELECT nome_cli, telefone_cli, email_cli, id_cli FROM tb_clientes WHERE dtCadastro_cli between CONVERT(DATETIME,'2007-05-05',103) and CONVERT(DATETIME,'2007-07-05',103) ORDER BY nome_cli ASC"

onde tem a data precisaria ser a variavel, "de" - "ate", mas preciso deixar entre os "(" ou nao ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

"SELECT nome_cli, telefone_cli, email_cli, id_cli FROM tb_clientes WHERE dtCadastro_cli between CONVERT(DATETIME,'"&replace(data1,"/","-")&"',103) and CONVERT(DATETIME,'replace(data2,"/","-")',103) ORDER BY nome_cli ASC"

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.