Обробка некоректних дат

Аналіз часових рядів у SQL Server

Maham Faisal Khan

Senior Data Science Content Developer

Функції перетворення дат із захистом від помилок

«Небезпечні» функції

CAST()
CONVERT()
PARSE()

Безпечні функції

TRY_CAST()
TRY_CONVERT()
TRY_PARSE()
Аналіз часових рядів у SQL Server

Коли все йде як слід

SELECT
    PARSE('01/08/2019' AS DATE USING 'en-us') AS January8US,
    PARSE('01/08/2019' AS DATE USING 'fr-fr') AS August1FR;
GO

Результати:

January8US August1FR
2019-01-08 2019-08-01
Аналіз часових рядів у SQL Server

Коли все йде шкереберть

SELECT
    PARSE('01/13/2019' AS DATE USING 'en-us') AS January13US,
    PARSE('01/13/2019' AS DATE USING 'fr-fr') AS Smarch1FR;
GO
**Msg 9819, Level 16, State 1, Line 1**

Помилка перетворення рядкового значення '01/13/2019' у тип даних date з використанням культури 'fr-fr'.
Аналіз часових рядів у SQL Server

Правильна дія, коли все йде не так

SELECT
    TRY_PARSE('01/13/2019' AS DATE USING 'en-us') AS January13US,
    TRY_PARSE('01/13/2019' AS DATE USING 'fr-fr') AS Smarch1FR;
GO
January13US Smarch1FR
2019-01-13 NULL
Аналіз часових рядів у SQL Server

Ціна безпеки

Використовувати безпечні методи не дорожче, ніж небезпечні.

Аналіз часових рядів у SQL Server

Ціна безпеки

Функції CAST() і CONVERT() працюють приблизно з однаковою швидкістю.

Аналіз часових рядів у SQL Server

Ціна безпеки

Функції PARSE() значно повільніші за CAST() і CONVERT().

Аналіз часових рядів у SQL Server

Ціна безпеки

Це показники за секунду, тож масштабуються лінійно.

Аналіз часових рядів у SQL Server

Давайте потренуємось

Аналіз часових рядів у SQL Server

Preparing Video For Download...