[firebase-br] RES: sql entre datas e horas

Carlos Phelippe carlos.phelippe em digilab.com.br
Sáb Dez 29 21:36:05 -03 2012


Amigo,
como já foi comentado se você converter ou criar um novo tipo timestamp seria muito mais prático.

MAS, vc pode fazer assim:
Por exemplo, se você vai fechar o dia 28/12/2012.

Seria a movimentação a partir das 18:00:00 às 23:59:59 do dia 28/12/2012 e a movimentação das 00:00:00 às 02:30:00 do dia 29/12/2012.

Acredito que vc pode fazer um select baseado nisso de forma simples.

select * from table
where :data_fechamemto = DATA and HORA entre :18_00_00 and :23_59_59
AND
:data_fechamento+1dia and hora entre :00_00_00 and :02_30_00

Seria uma sugestão.


como vc sabe a hora que incia e que termina as vendas. Vamos supor as vendas do dia 29/12/2012 começam às 18horas do dia 29 e termina às  02:30 do dia 30. Correto?

Se vc tiver um data_hora que vc fixe no seu sistema de modo a fazer o select assim:

where data_cupom
________________________________________
De: lista [lista-bounces em firebase.com.br] em nome de Claudinei Catarino [claudineicatarino em bol.com.br]
Enviado: sábado, 29 de dezembro de 2012 10:46
Para: lista em firebase.com.br
Assunto: Re: [firebase-br] sql entre datas e horas

Pessoal, bom dia!

Eu tive um problema semelhante e solucionei da seguinte maneira: criei um
campo "status" para que eu soubesse quando ocorreu a abertura e o fechamento
do período.

Maurício, pelo que pude perceber na tua explicação, em um intervalo de tempo
podemos ter uma abertura, um fechamento e novamente uma abertura de
expediente. Apesar de você falar que o início é às 18:00 e o encerramento às
02:30, o exemplo que você colocou demonstra uma "QUEBRA DE REGRA DE NEGÓCIO"
pois seu sistema registrou uma data-hora fora do especificado no requisito
(momento da abertura e momento de encerramento de expediente).

Eu concordo com o pessoal. Não sei se é possível você mexer na estrutura dos
dados e no sistema. Quando eu tive um problema desta natureza resolvi
criando um campo "status" e nele eu informava quando era o início e quando
era o fim do expediente.

Parece loucura o que vou dizer: nestes casos tente colocar-se no lugar da
máquina. Imagine-se recebendo os dados e os colocando em cada lugar do
registro. Parece loucura, mas é esta a postura/técnica que adoto quando me
surge este tipo de problema.

É isto aí. Espero ter ajudado.

Pessoal, de todo meu coração, um Feliz Ano Novo para todos. Desculpem e
perdoem-me as faltas. Agradeço-lhes pelos momentos que tivemos juntos neste
ano e podemos trocar conhecimentos. Agradeço a todos que fazem deste canal
um veículo de paz para nós.

"Porque, a quem muito se deu, muito se exigirá. Quanto mais se confiar a
alguém, dele mais se há de exigir. (Lucas, 12, 39-48)"

Que Deus abençõe nossas famílias para que tenhamos força e coragem para
enfrentarmos as mazelas da vida!

Pessoal, fiquem com Deus, boas festas e até 2013!!!!

Claudinei Catarino


Message: 3
Date: Thu, 27 Dec 2012 21:13:02 -0300
From: MAURICIO COSTA <maximmumsistemas em gmail.com>
To: FireBase <lista em firebase.com.br>
Subject: Re: [firebase-br] sql entre datas e horas
Message-ID:
<CAPLOrMxjsfR3UmuX=OcTKD1UBTvE1ySb2SX_g0XJgrdCqOQuVg em mail.gmail.com>
Content-Type: text/plain; charset=ISO-8859-1

Obrigado Renato já por me disponibilizar ajuda. Mas, acho que não expliquei
direito. Vou tentar ser mais didático em minha pergunta:
Tenho uma tabela chamada CUPOM, nesta temos os campos ID_CUPOM,DATA_CUPOM,
HORA_CUPOM, VALOR_CUPOM. Colocando dados de exemplos na mesma ficaria assim:
ID_CUPOM DATA_CUPOM HORA_CUPOM VALOR_CUPOM
1                01/12/2012       23:25:53            100,00
2                01/12/2012       23:52:58            120,00
3                01/12/2012       00:59:59            300,00
4                02/12/2012       01:12:25            180,00
5                02/12/2012       02:14:58            140,00
Como e restaurante as vendas inicia as 18:00 e conclui as 02:30 da manhã no
outro dia, no exemplo acima iniciou no dia 01/12/2012 de 23:25:53 e
concluiu em 02/12/2012 as 02:14:58. Nesta data 02/12/2012 o estabelecimento
abrirá as 18:00 e as vendas da madrugada que foram duas vendas as de 180,00
e 140,00 vai entrar no relatório do dia 02/12/2012 por isso preciso de uma
maneira que a hora possa separar as vendas de uma dia para o outro. Exemplo
Where DATA_CUPOM >= 01/12/2012 And DATA_CUPOM <= 02/12/2012, só que eu
queria os produtos onde HORA_CUPOM >= 18:00:00 e  HORA_CUPOM <= 03:00:00.
Acho que ficou melhor.


Em 27 de dezembro de 2012 20:41, renato wulf jr
<renatus em centris.com.br>escreveu:

> O ideal seria ao invés de ter um campo tipo date e outro time que fosse um
> do tipo timestamp (contempla data e hora junto).
> Nesse caso a pesquisa ficaria mais fácil.
>
> Um exemplo:
>
> select * from tabela where data between '2012-12-1 00:00:00' and
> '2012-12-1
> 12:00:00'
>
>
> Se não der pra mudar a modelagem dos seus dados outra saída seria
> concatenar os campos data e hora e a partir daí fazer a pesquisa. Seria
> algo assim:
>
> select cast(data || ' ' || hora as timestamp) datahora from tabela where
> cast(data || ' ' || hora as timestamp) between '2012-12-1 00:00:00' and
> '2012-12-1 12:00:00'
>
> Obs.: O comando sql acima não testei em nenhuma base e pode ser que
> contenha erro de sintaxe, mas a ideia seria essa.
>
>
>
> Renato
>
>
>
>


______________________________________________
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
Para consultar mensagens antigas: http://firebase.com.br/pesquisa




Mais detalhes sobre a lista de discussão lista