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

Анализ временных рядов в 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**

Error converting string value '01/13/2019' into data type date using culture '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...