sql - Calculate working shift giving current datetime in sybase -


i need sql script in sybase or @ least ansi sql giving current datetime, can current working shift.

  • working shift '1' begins @ 08:00 , ends @ 15:30
  • working shift '2' begins @ 15:30 , ends @ 23:00
  • working shift '3' begins @ 23:00 , ends @ 08:00am of next day

i having trouble third shift, because of change between 1 day , next day

set  @fechaactual = convert(datetime, 'jun 11 2015 11:00am', 100) --getdate()  set @horacomienzoturno1 = convert(datetime,convert(varchar, @fechaactual, 101) + " 08:00:00 am") set @horafinturno1 = convert(datetime,convert(varchar, @fechaactual, 101) + " 03:29:59 pm") set @horacomienzoturno2 = convert(datetime,convert(varchar, @fechaactual, 101) + " 03:30:00 pm") set @horafinturno2 = convert(datetime,convert(varchar, @fechaactual, 101) + " 10:59:59 pm") set @horacomienzoturno3 = convert(datetime,convert(varchar, @fechaactual, 101) + " 11:00:00 pm") set @horafinturno3 = convert(datetime,convert(varchar, @fechaactual, 101) + " 07:59:59 am")  if @fechaactual >= @horacomienzoturno1 , @fechaactual <= @horafinturno1 begin     select 1 turno, @fechaactual fechaactual end  if @fechaactual >= @horacomienzoturno2 , @fechaactual <= @horafinturno2  begin     select 2 turno, @fechaactual fechaactual end  if @fechaactual >= @horacomienzoturno3 , @fechaactual <= @horafinturno3  begin     select 3 turno, dateadd(dd, -1, @fechaactual) fechaactual end 

i have no sybase here, cannot try it. think need datepart function. function gets hours, or minutes datetime value, able check without thinking in days.

i did following changes:

  • i changed code show how works (maybe spelling not right)

  • i changed last condition or, because it´s impossible last shift worker, have hour > 23 , < 9 @ same time ;-)

hope may you. (sorry if doesn´t compile, it´s few years since don´t play sybase).

set  @fechaactual = datepart("hhmi",convert(datetime, 'jun 11 2015 11:00am', 100))  set @horacomienzoturno1 = datepart("hhmi",convert(datetime,convert(varchar, @fechaactual, 101) + " 08:00:00 am")) set @horafinturno1 = datepart("hhmi",convert(datetime,convert(varchar, @fechaactual, 101) + " 03:29:59 pm")) set @horacomienzoturno2 = datepart("hhmi",convert(datetime,convert(varchar, @fechaactual, 101) + " 03:30:00 pm")) set @horafinturno2 = datepart("hhmi",convert(datetime,convert(varchar, @fechaactual, 101) + " 10:59:59 pm")) set @horacomienzoturno3 = datepart("hhmi",convert(datetime,convert(varchar, @fechaactual, 101) + " 11:00:00 pm")) set @horafinturno3 = datepart("hhmi",convert(datetime,convert(varchar, @fechaactual, 101) + " 07:59:59 am"))  if @fechaactual >= @horacomienzoturno1 , @fechaactual <= @horafinturno1 begin     select 1 turno, @fechaactual fechaactual end  if @fechaactual >= @horacomienzoturno2 , @fechaactual <= @horafinturno2  begin     select 2 turno, @fechaactual fechaactual end  if @fechaactual >= @horacomienzoturno3 or @fechaactual <= @horafinturno3  begin     select 3 turno, dateadd(dd, -1, @fechaactual) fechaactual end 

edit added "mi" datepart() pattern, manage minutes


Comments

Popular posts from this blog

javascript - gulp-nodemon - nodejs restart after file change - Error: listen EADDRINUSE events.js:85 -

Fatal Python error: Py_Initialize: unable to load the file system codec. ImportError: No module named 'encodings' -

javascript - oscilloscope of speaker input stops rendering after a few seconds -