@@ -263,7 +263,9 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
263263 @max_event_time datetime2 (7 ),
264264 @dsql nvarchar (max ) = N ' ' ,
265265 @mdsql_template nvarchar (max ) = N ' ' ,
266- @mdsql_execute nvarchar (MAX ) = N ' ' ;
266+ @mdsql_execute nvarchar (max ) = N ' ' ,
267+ @start_date_debug nvarchar (50 ),
268+ @end_date_debug nvarchar (50 );
267269
268270 IF @azure = 1
269271 BEGIN
@@ -276,68 +278,38 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
276278 RAISERROR (' Fixing parameters and variables' , 0 , 0 ) WITH NOWAIT ;
277279 END ;
278280
281+ /*
282+ Normalize dates to UTC offset for comparison with system_health events
283+ When dates are NULL, use SYSUTCDATETIME() which is already UTC
284+ When dates are provided, SWITCHOFFSET converts from any timezone to UTC
285+ This matches sp_QuickieStore pattern for handling date conversions
286+ */
279287 SELECT
280288 @start_date =
281- CASE
282- WHEN @start_date IS NULL
283- THEN
284- DATEADD
285- (
286- MINUTE,
287- DATEDIFF
288- (
289- MINUTE,
290- SYSDATETIME (),
291- GETUTCDATE ()
292- ),
293- DATEADD
294- (
295- DAY ,
296- - 7 ,
297- SYSDATETIME ()
298- )
299- )
300- ELSE
301- DATEADD
302- (
303- MINUTE,
304- DATEDIFF
305- (
306- MINUTE,
307- SYSDATETIME (),
308- GETUTCDATE ()
309- ),
310- @start_date
311- )
312- END ,
289+ ISNULL
290+ (
291+ SWITCHOFFSET
292+ (
293+ @start_date,
294+ ' +00:00'
295+ ),
296+ DATEADD
297+ (
298+ DAY ,
299+ - 7 ,
300+ SYSUTCDATETIME ()
301+ )
302+ ),
313303 @end_date =
314- CASE
315- WHEN @end_date IS NULL
316- THEN
317- DATEADD
318- (
319- MINUTE,
320- DATEDIFF
321- (
322- MINUTE,
323- SYSDATETIME (),
324- GETUTCDATE ()
325- ),
326- SYSDATETIME ()
327- )
328- ELSE
329- DATEADD
330- (
331- MINUTE,
332- DATEDIFF
333- (
334- MINUTE,
335- SYSDATETIME (),
336- GETUTCDATE ()
337- ),
338- @end_date
339- )
340- END ,
304+ ISNULL
305+ (
306+ SWITCHOFFSET
307+ (
308+ @end_date,
309+ ' +00:00'
310+ ),
311+ SYSUTCDATETIME ()
312+ ),
341313 @wait_round_interval_minutes = /* do this i guess?*/
342314 CASE
343315 WHEN @wait_round_interval_minutes < 1
@@ -407,33 +379,37 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
407379 OPTION(RECOMPILE);
408380' ,
409381 @mdsql_template = N'
410- IF OBJECT_ID('' {table_check}'' , '' U'' ) IS NOT NULL
411- BEGIN
412- SELECT
413- @max_event_time =
414- ISNULL
382+ IF OBJECT_ID('' {table_check}'' , '' U'' ) IS NOT NULL
383+ BEGIN
384+ SELECT
385+ @max_event_time =
386+ ISNULL
387+ (
388+ MAX({date_column}),
389+ DATEADD
390+ (
391+ MINUTE,
392+ DATEDIFF
415393 (
416- MAX({date_column}),
417- DATEADD
418- (
419- MINUTE,
420- DATEDIFF
421- (
422- MINUTE,
423- SYSDATETIME(),
424- GETUTCDATE()
425- ),
426- DATEADD
427- (
428- DAY,
429- -1,
430- SYSDATETIME()
431- )
432- )
394+ MINUTE,
395+ SYSDATETIME(),
396+ GETUTCDATE()
397+ ),
398+ DATEADD
399+ (
400+ DAY,
401+ -1,
402+ SYSDATETIME()
433403 )
434- FROM {table_check};
435- END;
436- ' ;
404+ )
405+ )
406+ FROM {table_check};
407+ END;
408+ ' ;
409+
410+ SELECT
411+ @start_date_debug = @start_date,
412+ @end_date_debug = @end_date;
437413
438414 IF @timestamp_utc_mode = 0
439415 BEGIN
@@ -1414,7 +1390,7 @@ AND ca.utc_timestamp < @end_date';
14141390
14151391 IF @debug = 1
14161392 BEGIN
1417- RAISERROR (' Executing collection SQL' , 0 , 0 ) WITH NOWAIT ;
1393+ RAISERROR (' Executing collection SQL for dates between %s and %s ' , 0 , 0 , @start_date_debug, @end_date_debug ) WITH NOWAIT ;
14181394 SET STATISTICS XML ON ;
14191395 END ;
14201396
0 commit comments