Skip to content

Commit d31bbdb

Browse files
Update sp_HealthParser.sql
fix utc conversion
1 parent 3b3a75d commit d31bbdb

1 file changed

Lines changed: 62 additions & 86 deletions

File tree

sp_HealthParser/sp_HealthParser.sql

Lines changed: 62 additions & 86 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)