Domanda

Ho un Oracle Database 10g con diversi posti di lavoro. Uno dei compiti thoses devono eseguire ogni due ore. Quindi i parametri delle "intervallo" "next_dat" e si presenta come quello.

   ,next_date => to_date('27.04.2011 10:18:00','dd/mm/yyyy hh24:mi:ss')
   ,interval  => 'to_date(to_char(sysdate + (2/24), ''DD.MM.YYYY HH24:MI''), ''DD.MM.YYYY HH24:MI'')'

I posti di lavoro non hanno bisogno di correre di notte. Quindi la domanda è:. È possibile progettare, ad esempio "Intervallo" in quel modo, che i posti di lavoro viene eseguito solo 6:00-08:00 (in HH24 06:00 alle 20:00)

La mia prima idea (e ultima scelta) è un lavoro, oltre che imposta il principale posto di lavoro a "rotto" tra 20:00 un 06:00. Ma non mi piace l'idea di un lavoro diverso.

Grazie!

È stato utile?

Soluzione

Si potrebbe utilizzare un'istruzione caso nell'intervallo per controllare l'ora del giorno quindi passare:

case
  when to_char(trunc(sysdate, 'HH24') + 2/24, 'HH24') between '06' and '20' then
    trunc(sysdate, 'HH24') + 2/24 
  else
    trunc(sysdate)+1+(6/24)
end

Questo può essere ampliato per includere un controllo sul giorno della settimana. (È necessario essere attenti sul controllo per il giorno della settimana in quanto dipende dalle impostazioni NLS).

simile al seguente avrebbe gestito il giorno della settimana, ma dovrete confermare i casi limite e controllare le impostazioni NLS (per me, Lunedi è il giorno 1 e Domenica è il giorno 7):

case
  when
    to_number(to_char(sysdate, 'D')) between 1 and 5 then
      case
        when to_char(trunc(sysdate, 'HH24') + 2/24, 'HH24') between '06' and '20'
                                                                            then 
          trunc(sysdate, 'HH24') + 2/24 
        else 
          trunc(sysdate)+1+(6/24)
        end
  else
    trunc(sysdate) + (8 - to_number(to_char(sysdate, 'D'))) + 6/24
end 

Anche se ... pensiamo di essere ormai saldamente nel "tempo per raddrizzare una funzione" stadio. :)

Altri suggerimenti

Fare la funzione di un intervallo, allora si può avere tutto quello che controlli simili.

Vedi qui per un esempio:

http://www.orafaq.com/node/871

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top