[firebase-br] Select no Win7 64

Gladiston Santana gladiston em vidy.com.br
Seg Nov 26 13:13:41 -03 2012


Usa assim, ao inves de :
a BETWEEN b AND c
equivale a dizer a >= b AND a<=c

ao inves de (detesto clausula NOT, é matematicamente mais confusa) :
a NOT BETWEEN b AND c
equivale a escrever a <b OR a>c

Apenas use CAST para ter todos os valores em forma de data, campos
timestamp+date geram resultados timestamp e isso confunde no final porque
"a< 31/01/2013" se transforma em "a<31/01/2013 00:00:00"  daí o dia 31 fica
fora do resultado da query, isso serve para between tambem.


Gladiston Santana
Departamento de TI
Grupo Vidy
Tel (11) 4787-3122 ramal 228
Rod. Régis Bittencourt 3360 - Km 272,5
Taboão da Serra - SP - CEP: 06793-000
Visite nosso site: www.vidy.com.br
Visite também : www.expolabor.com.br





Em 26 de novembro de 2012 12:55, Pedro Leonardo
<pleonardomv em bol.com.br>escreveu:

> Então qual a instrução vocês aconselham usar para retornar os registros
> que estão entre duas datas?
>
> Obrigado
> Leonardo
>
> ------------------------------**--------------------
> From: "Gladiston Santana" <gladiston em vidy.com.br>
> Sent: Monday, November 26, 2012 11:44 AM
> To: "FireBase" <lista em firebase.com.br>
>
> Subject: Re: [firebase-br] Select no Win7 64
>
>  Predicativos tem sua forma regular de uso, você não pode parametrizar da
>> forma como foi feita.
>> Naquele caso, só a semantica >=< no lugar do between, mesmo assim
>> aplicando
>> um cast para transformá-los em date.
>>
>> Quando algo não está na sua forma regular (eu gosto do tradicional ANSI),
>> pode funcionar, mas não há garantias que continuaria a funcionar no futuro
>> na forma que se espera ou em banco de dados diferente.
>> Pessoalmente, uso o between apenas em if ou case, mesmo assim quando não
>>>> risco de entrar nulo na equação, cada banco tem um jeito diferente de
>> lidar
>> com nulos usando predicativos, contudo usando a semantica >=<, sempre que
>> entra um nulo nas contas, todo o restante vira nulo.
>>
>> inte+
>>
>>
>>
>> Gladiston Santana
>> Departamento de TI
>> Grupo Vidy
>> Tel (11) 4787-3122 ramal 228
>> Rod. Régis Bittencourt 3360 - Km 272,5
>> Taboão da Serra - SP - CEP: 06793-000
>> Visite nosso site: www.vidy.com.br
>> Visite também : www.expolabor.com.br
>>
>>
>>
>>
>>
>> Em 26 de novembro de 2012 10:29, Tecnobyte Informática <
>> temp2 em tecnobyte.com.br> escreveu:
>>
>>  Olá Gladiston
>>>
>>> O que exatamente você considera errado neste SQL? Eu tenho uma situação
>>> como esta abaixo e funciona normalmente:
>>>
>>> SELECT ... FROM ContaReceber
>>> WHERE CURRENT_DATE BETWEEN DataEmissao AND DataPagto
>>>
>>> Isto retorna todas as contas a receber em que:
>>>
>>> - data de emissão é menor ou igual à data corrente
>>> e
>>> - data do pagamento é maior ou igual à data corrente.
>>>
>>> Atenciosamente.
>>>
>>> Daniel P. Guimarães
>>> Tecnobyte Informática
>>> www.tecnobyte.com.br
>>>
>>> -----Mensagem Original----- From: Gladiston Santana
>>> Sent: Monday, November 26, 2012 7:31 AM
>>> To: FireBase
>>>
>>> Subject: Re: [firebase-br] Select no Win7 64
>>>
>>> Olhando assim, não deveria funcionar em ambos.
>>> Tanto o uso de query parametrizada quanto a clausula between estão
>>> erradas.
>>> Não vejo como isso daí teria funcionado no win32.
>>>
>>> Em 23 de novembro de 2012 19:21, Pedro Leonardo
>>> <pleonardomv em bol.com.br>****escreveu:
>>>
>>>
>>>  Pessoal. porque esse select não funciona no Win 7 64? No 32 funciona
>>>
>>>> legal...
>>>>
>>>>   QueryBuscaCom.Close;
>>>>   QueryBuscaCom.SQL.Clear;
>>>>   QueryBuscaCom.SQL.Text := 'SELECT * FROM REGISTRO WHERE Cod =:pCODIGO
>>>> and :pDATAHOJE between DataIni and DataFim';
>>>>   QueryBuscaCom.ParamByName('******pCODIGO').AsString:=
>>>> trim(ComboArq.Text);
>>>>   QueryBuscaCom.ParamByName('******pDATAHOJE').AsDateTime:= now; //
>>>>
>>>>
>>>>   QueryBuscaCom.Open;
>>>>
>>>> Alguma dica?
>>>>
>>>> Obrigado
>>>> Leonardo
>>>>
>>>>
>>>
>>> ______________________________****________________
>>>
>>> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
>>> Para saber como gerenciar/excluir seu cadastro na lista, use:
>>> http://www.firebase.com.br/fb/****artigo.php?id=1107<http://www.firebase.com.br/fb/**artigo.php?id=1107>
>>> <http://**www.firebase.com.br/fb/artigo.**php?id=1107<http://www.firebase.com.br/fb/artigo.php?id=1107>
>>> >
>>> Para consultar mensagens antigas: http://firebase.com.br/****pesquisa<http://firebase.com.br/**pesquisa>
>>> <http://firebase.com.**br/pesquisa <http://firebase.com.br/pesquisa>>
>>>
>>>  ______________________________**________________
>> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
>> Para saber como gerenciar/excluir seu cadastro na lista, use:
>> http://www.firebase.com.br/fb/**artigo.php?id=1107<http://www.firebase.com.br/fb/artigo.php?id=1107>
>> Para consultar mensagens antigas: http://firebase.com.br/**pesquisa<http://firebase.com.br/pesquisa>
>>
>
>
> ______________________________**________________
> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
> Para saber como gerenciar/excluir seu cadastro na lista, use:
> http://www.firebase.com.br/fb/**artigo.php?id=1107<http://www.firebase.com.br/fb/artigo.php?id=1107>
> Para consultar mensagens antigas: http://firebase.com.br/**pesquisa<http://firebase.com.br/pesquisa>
>



Mais detalhes sobre a lista de discussão lista