-- my current uk time is 2014-01-09 10:43:00 +0 DECLARE @userLocalTimeChina datetimeoffset(4) = '2014-01-09 18:43:00 +08:00'; DECLARE @userLocalTimeLasVagas datetimeoffset(4) = '2014-01-09 02:43:00 -08:00'; DECLARE @userUTCTime datetimeoffset(4) = '2014-01-09 10:43:00 +00:00'; Declare @systemDateTimeOffsetWhereServerInUK datetimeoffset(4) = SYSDATETIMEOFFSET(); Declare @systemDateTimeWhereServerInUK datetime = GETDATE(); print @systemDateTimeOffsetWhereServerInUK print @systemDateTimeWhereServerInUK -- for demo, it gives this SET @systemDateTimeOffsetWhereServerInUK = '2014-01-09 10:43:00 +00:00'; SET @systemDateTimeWhereServerInUK = '2014-01-09 10:43:00' Declare @systemDateTimeOffsetWhereServerInNY datetimeoffset(4) = '2014-01-09 05:43:00 -05:00'; Declare @systemDateTimeWhereServerInNY datetime = '2014-01-09 05:43:00'; -- ALL THESE TIMES should be the same. --Using HOURS here to show the difference, but if we usually use DAYS, this simply means people can 'see' things or 'where clauses' go wrong at certain hours of the day print 'Compare user LOCAL time to server offset and not offset date time, in uk then new york' print DATEDIFF(HH, @userLocalTimeChina, @systemDateTimeOffsetWhereServerInUK); -- Correct print DATEDIFF(HH, @userLocalTimeChina, @systemDateTimeWhereServerInUK); -- The result is correct, but only because server is in UK and no daylight savings time, so will be INCORRECT and CORRECT depending on time of year!!! print DATEDIFF(HH, @userLocalTimeChina, @systemDateTimeOffsetWhereServerInNY); -- CORRECT print DATEDIFF(HH, @userLocalTimeChina, @systemDateTimeWhereServerInNY); -- INCORRECT RESULT print 'Compare user UTC time to server offset and not offset date time, in uk then new york' -- compare Users UTC time offset with system offset produces CORRECT result most of the time, in the uk print DATEDIFF(HH, @userUTCTime, @systemDateTimeOffsetWhereServerInUK); -- CORRECT print DATEDIFF(HH, @userUTCTime, @systemDateTimeWhereServerInUK); -- The result is correct, but only because server is in UK and no daylight savings time, so will be INCORRECT and CORRECT depending on time of year!!! print DATEDIFF(HH, @userUTCTime, @systemDateTimeOffsetWhereServerInNY); -- CORRECT print DATEDIFF(HH, @userUTCTime, @systemDateTimeWhereServerInNY); -- INCORRECT RESULT --CONCLUSION: ALWAYS COMPARE OFFSET TO OFFSET. OR UTCDATETIME TO UTCDATETIME. otherwise it's totaly dependant on the deploy location time zone if the solution will work.