INTERVALO ENTRE DATAS SQL SERVER 2005
Estou mudando um sistema de access para sqlserver2005 tenho uma consulta que era assim:
[ô]Data1.RecordSource = [Ô]Select * from C_Mensalidades where cdate(data) BETWEEN #[Ô] & Format(inicio, [Ô]mm/dd/yyyy[Ô]) & [Ô]# AND #[Ô] & Format(Final, [Ô]mm/dd/yyyy[Ô]) & [Ô]# And cod & status = [ô][Ô] & buscar.Text & [Ô]SIM[Ô] & [Ô][ô][Ô]
[ô]Data1.Refresh
Quero converter para sqlserver2005 to tentando fazer assim: Mais dar erro. To tentando achar a sintaxe correta!!!
[ô]Adodc1.CommandType = adCmdText
[ô]Adodc1.RecordSource = ([Ô]Select * from C_Mensalidades where data >= [Ô] & Format(inicio, [Ô]mm/dd/yyyy[Ô]) & [Ô] AND data <=[Ô] & Format(Final, [Ô]mm/dd/yyyy[Ô]) & [Ô] And cod = [Ô] & buscar.Text & [Ô] AND status = [ô][Ô] & [Ô]SIM[Ô] & [Ô][ô][Ô])
[ô]Adodc1.Refresh
o campo data = nvarchar(10)
cod = nchar(5)
status = ntext
Alguém pode me ajudar. GRATO!
[ô]Data1.RecordSource = [Ô]Select * from C_Mensalidades where cdate(data) BETWEEN #[Ô] & Format(inicio, [Ô]mm/dd/yyyy[Ô]) & [Ô]# AND #[Ô] & Format(Final, [Ô]mm/dd/yyyy[Ô]) & [Ô]# And cod & status = [ô][Ô] & buscar.Text & [Ô]SIM[Ô] & [Ô][ô][Ô]
[ô]Data1.Refresh
Quero converter para sqlserver2005 to tentando fazer assim: Mais dar erro. To tentando achar a sintaxe correta!!!
[ô]Adodc1.CommandType = adCmdText
[ô]Adodc1.RecordSource = ([Ô]Select * from C_Mensalidades where data >= [Ô] & Format(inicio, [Ô]mm/dd/yyyy[Ô]) & [Ô] AND data <=[Ô] & Format(Final, [Ô]mm/dd/yyyy[Ô]) & [Ô] And cod = [Ô] & buscar.Text & [Ô] AND status = [ô][Ô] & [Ô]SIM[Ô] & [Ô][ô][Ô])
[ô]Adodc1.Refresh
o campo data = nvarchar(10)
cod = nchar(5)
status = ntext
Alguém pode me ajudar. GRATO!
Você pode [Ô]desmembrar[Ô] o seu campo para pegar o dia, mes e ano armazenado porque não dá para fazer operações com datas em campos nvarchar.
Veja minha resposta neste tópico
Veja minha resposta neste tópico
qual o motivo do seu campo ser nvarchar em vez de datetime?
repare também que você não usou um delimitador para a data de forma que a sql vai efetuar um cálculo com os números, o ideal na verdade seria você aprender a usar parâmetros, que é não apenas recomendado como também a forma mais segura de se passar dados para uma sql
repare também que você não usou um delimitador para a data de forma que a sql vai efetuar um cálculo com os números, o ideal na verdade seria você aprender a usar parâmetros, que é não apenas recomendado como também a forma mais segura de se passar dados para uma sql
Adodc1.RecordSource = ([Ô]SELECT * FROM C_MENSALIDADES WHERE data BETWEEN [ô][Ô] & Format(inicio, [Ô]mm/dd/yyyy[Ô]) & [Ô][ô] AND [ô][Ô] & Format(final, [Ô]mm/dd/yyyy[Ô]) & [Ô][ô] And cod = [ô][Ô] & buscar.Text & [Ô][ô] AND UPPER(status) = [ô]SIM[ô][Ô])
Acho que isso aqui vai te ajudar
FILMAN, cara deu quase certo. A sintaxe passou fazendo assim:
Adodc1.CommandType = adCmdText
Adodc1.RecordSource = ([Ô]SELECT * FROM C_MENSALIDADES WHERE data BETWEEN [ô][Ô] & Format(inicio, [Ô]dd/mm/yyyy[Ô]) & [Ô][ô] AND [ô][Ô] & Format(Final, [Ô]dd/mm/yyyy[Ô]) & [Ô][ô] And cod = [ô][Ô] & buscar.Text & [Ô][ô] AND status = [ô]SIM[ô][Ô])
Adodc1.Refresh
coloquei o campo status nvarchar pois não aceitou a função UPPER com ntext mais passou blz.
só que as datas tive que colocar no formato [Ô]dd/mm/yyyy[Ô] (pois do outro jeito nao tava dando certo a busca) so que não filtrou o intervalo correto buscou todas as datas inserida do mesmo cliente (ok) com o mesmo status (ok)
Será que SINTAXE ta aceitando o problema agora está em filtrar o intervalo correto.
Tem alguma Idéia?
dentro da tabela as datas então inseridas: dd/mm/yyyy já tentei colocar também mm/dd/yyyy só que mesm assim ta filtrando tudo.
Adodc1.CommandType = adCmdText
Adodc1.RecordSource = ([Ô]SELECT * FROM C_MENSALIDADES WHERE data BETWEEN [ô][Ô] & Format(inicio, [Ô]dd/mm/yyyy[Ô]) & [Ô][ô] AND [ô][Ô] & Format(Final, [Ô]dd/mm/yyyy[Ô]) & [Ô][ô] And cod = [ô][Ô] & buscar.Text & [Ô][ô] AND status = [ô]SIM[ô][Ô])
Adodc1.Refresh
coloquei o campo status nvarchar pois não aceitou a função UPPER com ntext mais passou blz.
só que as datas tive que colocar no formato [Ô]dd/mm/yyyy[Ô] (pois do outro jeito nao tava dando certo a busca) so que não filtrou o intervalo correto buscou todas as datas inserida do mesmo cliente (ok) com o mesmo status (ok)
Será que SINTAXE ta aceitando o problema agora está em filtrar o intervalo correto.
Tem alguma Idéia?
dentro da tabela as datas então inseridas: dd/mm/yyyy já tentei colocar também mm/dd/yyyy só que mesm assim ta filtrando tudo.
configuração do banco
Acho que vai ser o jeito utilizar o padrão iso mesmo yyyy/mm/dd que resolve.
Grato a todos!
Grato a todos!
Tópico encerrado , respostas não são mais permitidas