The times are getting changed when stored to MS SQL.
I’m reading a time stamp out of a Siemens PLC (array of bytes). And converting it with datetime.datetime
import datetime
logger = system.util.getLogger("MyLogger")
logger.warn('SiemensDate Hour:' + str(h))
return datetime.datetime(y,m,d,h,i,s,0)
---Logger reported: SiemensDate Hour:16
and this bit of code in the calling subroutine printed this:
MyFunc.MsgBox('GateWay/TagChange/GetBatchData/Script: MyTime =
MyFunc.SiemensDate ' + str(MyTime)
---Logger reported: 2021-10-25 16:52:51
Point being, I’m getting the time correct from the PLC. However, when running the Named Query they are getting changed.
params = {'id':BTblID,
'Start_inHg': MyData['VacuumCheckStart(inHg)'],
'Stop_inHg': MyData['VacuumCheckStop(inHg)'],
'StartTStamp': MyFunc.SiemensDate(MyData['BatchStart(Time)']),
'CoolTStamp' : MyFunc.SiemensDate(MyData['CoolStart(Time)']),
'StopTStamp': MyFunc.SiemensDate(MyData['BatchStop(Time)']),
'Start_inHgTStamp':MyFunc.SiemensDate(MyData['VacuumCheckStart(Time)']),
'Stop_inHgTStamp': MyFunc.SiemensDate(MyData['VacuumCheckStop(Time)']),
'HeatSetStartTStamp': MyFunc.SiemensDate(MyData['HeatSetStart(Time)'])}
BTbl = system.db.runNamedQuery('AN75/UpdateBatchTbl',params)
MyFunc.MsgBox('GateWay/TagChange/GetBatchData/Script:' + str(params))
---Logger reported: GateWay/TagChange/GetBatchData/Script:{'StartTStamp':
datetime.datetime(2021,10, 25, 16, 52, 51), 'Start_inHgTStamp': datetime.
datetime(2021, 10, 25, 16, 51, 21), 'Start_inHg': -29.20303, 'Stop_inHgTStamp':
datetime.datetime(2021, 10, 25, 16, 52, 21), 'HeatSetStartTStamp': datetime.
datetime(2021, 10, 25, 16, 53, 47), 'Stop_inHg': -29.179539, 'id': 31, 'StopTStamp':
datetime.datetime(2021, 10, 25, 17, 15, 10), 'CoolTStamp': datetime.datetime
(2021, 10, 25, 17, 0, 27)}
The Named Query in question:
This is a Trace from SQL Server Profiler. But what is being sent to SQL is using datetime2 declaration, and has been converted to UTC. Can I turn this off? Or do I need to convert times to local time w/every select statement? - is there a function for that?
exec sp_executesql N'UPDATE [dbo].[V1BatchTbl]
SET [Start_inHg] = @P0
,[Stop_inHg] = @P1
,[StartTStamp] = @P2
,[CoolTStamp] = @P3
,[StopTStamp] = @P4
,[Start_inHgTStamp] = @P5
,[Stop_inHgTStamp] = @P6
,[HeatSetStartTStamp] = @P7
WHERE id = @P8
',N'@P0 float,@P1 float,
@P2 datetime2,@P3 datetime2,@P4 datetime2,
@P5 datetime2,@P6 datetime2,@P7 datetime2,
@P8 int',-29.203029632568359,
-29.179538726806641,'2021-10-25 12:52:51','2021-10-25 13:00:27',
'2021-10-25 13:15:10','2021-10-25 12:51:21','2021-10-25 12:52:21',
'2021-10-25 12:53:47',31