I have some tags that query production data from a database. I have two shifts and the data has a ‘shift’ column which contains either a 1 or 2. I can easily where clause the shift = 2, but I only need the data from the last shift which is where my trouble comes in. The shift starts at 4pm and ends 2:30 am the next day. Every query I write using things like
where shift = 2 and (DATE(t_stamp) = CURDATE() and HOUR(t_stamp) > 16 ) or (DATE(t_stamp) = DATE_ADD(CURDATE(),INTERVAL -1, DAY))
Doesn’t work because of the change in CURDATE() after midnight. Any ideas for a better way to do this?? Thanks
What did you end up doing?
I am thinking I will do like
Mytable.tstamp > 'dateadd(hour,23,dateadd(day,-1,getdate()))'
and Mytable.tstamp < 'dateadd(hour,7,getdate()))'
just not sure how to dump the minutes, or if it does it
I used a tag that holds the shift start time, then I use
where t_stamp > :shiftStart
oh and then shiftstart is like a tag?
or is there a way to do a dropdown for three shifts, but provide two different times as parameters for start and end?
For mine, I think a dropdown to pick and send the start and end times would be best for me.
I guess I can use a case, and just send 1, 2, 3 and then use static parameters for the starts and ends
I got a cannot coerce value
edit:My tag is formatted, but it has a datetime type

is there an easy way to convert this in the query?
I use the built in ignition schedules to determine the shift start and end times. I have a gateway timer script that writes to shift active boolean tags. Shift Work Schedules - Ignition - Inductive Automation Forum
Not following what you are saying.
Is this true?
Converting a DATEIME to a DATE and then back to a DATETIME again sets the time to midnight
because if so,
Mytable.tstamp >= dateadd(hour,23,dateadd(day,-1,convert(datetime,convert(date,getdate())))
and Mytable.tstamp <= dateadd(hour,7,convert(datetime,convert(date,getdate())))
Is that a query or an expression? I’m not familiar with dateadd or convert.
Usually you need shift start and end times in multiple places. It is much more ergonomic to just pass the dates as parameters to the query from a tag value, which is where you were having the type error?
I don’t want to make another tag, and I was not sure how to convert that format in sql
Mine isn’t a sliding window though. It is made of static shift times.
Update 2 weeks later, I meant to also say that I had solved the issue I had with this, and I use this technique often now.
dateadd(hour,7,convert(datetime,convert(date,getdate())))