| Exibir mensagem anterior :: Exibir próxima mensagem |
| Autor |
Mensagem |
grsoft Aprendiz

Registrado: Segunda-Feira, 10 de Abril de 2006 Mensagens: 107
|
Enviada: Sex Fev 16, 2018 12:11 pm Assunto: ajuda sql data e hora |
|
|
opa pessoal, estou com uma bronca aqui do tamanho de um trem kkkkk
seguinte, meu sistema tem um cadastro de promoções mais ou menos da seguinte forma:
eu digo o dia da semana e a data e hora do começo e do fim da promoção, por exemplo:
quinta-feira das 18:00 até as 22:00 vc compra uma coca-cola e ganha outra.
estou com uma bronca quando essa promoção muda de um dia para outro, tipo:
quinta-feira das 18:00 até as 23:59 e sexta-feira das 00:00 as 03:00.
dentro da tabela eu armazeno a data e hora que eu inclui o pedido, então eu preciso de uma sql q eu consiga mostrar todos os produtos q eu inclui dentro desse range de horários (q pode ser qualquer um)
no caso do exemplo acima seria da quinta-feira 18:00 até sexa-feira 03:00h,. lembrando q esse range é totalmente configurável.
tabela promoção
COD DIASEMANA HORAINI HORAFIM
ex:
1 - quinta-feira - 18:00 - 23:59
2 - sexta-feira - 00:00 - 03:00
tabela movimento
COD CODPROD QUANT DATAHORA
ex:
1 - 10 - 2 - 15/02/2018 23:50:12
2 - 10 - 1 - 16/02/2018 00:05:24
esses dois registros na tabela de movimento devem entrar na promoção.
agradeço a ajuda de todos... |
|
| Voltar ao Topo |
|
 |
imex Moderador

Registrado: Sexta-Feira, 7 de Janeiro de 2011 Mensagens: 11666
|
|
| Voltar ao Topo |
|
 |
grsoft Aprendiz

Registrado: Segunda-Feira, 10 de Abril de 2006 Mensagens: 107
|
Enviada: Sex Fev 16, 2018 2:29 pm Assunto: |
|
|
MySQL versão é a 5.7.10
isso mesmo, não tem os dias exatos pq essa promoção funciona para todas as quintas-feiras e sextas-feiras, quando não quiser mais a promoção ele simplesmente desabilita a mesma. |
|
| Voltar ao Topo |
|
 |
imex Moderador

Registrado: Sexta-Feira, 7 de Janeiro de 2011 Mensagens: 11666
|
Enviada: Sex Fev 16, 2018 2:58 pm Assunto: |
|
|
Experimente fazer uns testes mais ou menos dessa forma para ver se é obtido o resultado esperado:
| Código: | select m.* from Movimento as m
where
exists(select 1 from Promocao as p
where
DayOfWeek(m.DataHora) =
case p.DiaSenama
when 'domingo' then 1
when 'segunda-feira' then 2
when 'terça-feira' then 3
when 'quarta-feira' then 4
when 'quinta-feira' then 5
when 'sexta-feira' then 6
else 7
end and
Time(m.DataHora) between p.HoraIni and p.HoraFim) |
Espero que ajude |
|
| Voltar ao Topo |
|
 |
grsoft Aprendiz

Registrado: Segunda-Feira, 10 de Abril de 2006 Mensagens: 107
|
Enviada: Sex Fev 16, 2018 5:13 pm Assunto: |
|
|
amigo, como sempre vc me ajudando, PERFEITO...
estou sem palavras para mostrar minha gratidão, MUITO obrigado...
| imex escreveu: | Experimente fazer uns testes mais ou menos dessa forma para ver se é obtido o resultado esperado:
| Código: | select m.* from Movimento as m
where
exists(select 1 from Promocao as p
where
DayOfWeek(m.DataHora) =
case p.DiaSenama
when 'domingo' then 1
when 'segunda-feira' then 2
when 'terça-feira' then 3
when 'quarta-feira' then 4
when 'quinta-feira' then 5
when 'sexta-feira' then 6
else 7
end and
Time(m.DataHora) between p.HoraIni and p.HoraFim) |
Espero que ajude |
|
|
| Voltar ao Topo |
|
 |
|