Ir para conteúdo

POWERED BY:

Arquivado

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

CaioCRS

Update Cabuloso!

Recommended Posts

Fala pessoal, preciso fazer um Update na tabela, só que a condição dele é muito louca...

Existe um capo na tabela, e neste campo, eu devo fazer um UPDATE, porém, deverá ser feito na linha onde o turno corresponde com o horário atual.
São 3 turnos na tabela, e em um dos campos dele, eu preciso setar um valor de acordo com o turno que estou enviando este update.

Eu precisaria de algo com a seguinte lógica

 

Update tabela_X set comando = 'Y'

where

if ((select to_char(sysdate, 'hh24:mi') as HORA from dual) between '01:00' and '08:00') then

turno = 1

else

((select to_char(sysdate, 'hh24:mi') as HORA from dual) between '08:00' and '17:00') then

turno = 2

else

((select to_char(sysdate, 'hh24:mi') as HORA from dual) between '17:00' and '01:00') then

turno = 3

 

*A sintaxe está absurda, mas é o que eu tenho em mente do que preciso

 

Se alguém puder dar uma força, fico agradecido, vlwww

Compartilhar este post


Link para o post
Compartilhar em outros sites

Motta, já tentei, mas como tratar essa necessidade com um case?

Case when 'hora_atual' between '01:00' and '08:00' then comando = 'Y'...Mas como fazer o update se a hora for compatível com o turno 1 no caso? Tem como fazer um update + case + where... ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Valeu Motta, no apuro acabei utilizando um pouco de vb + oracle e consegui resolver o problema. Ficou certinho, mas o duro é que depois não precisou mais desse código, com dó eu só comentei o trecho kkkk

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá, sei que já está resolvido... mais segue a dica de como você poderia ter feito.

 

 

Update tabela_X
set comando = 'Y'
where
turno = (case when to_char(sysdate, 'hh24:mi') between '01:00' and '08:00'
then 1
when to_char(sysdate, 'hh24:mi') between '08:00' and '17:00'
then 2
when to_char(sysdate, 'hh24:mi') between '17:00' and '01:00'
then 3
end)

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.