Разница между тире и косой чертой для переменных даты? - PullRequest
0 голосов
/ 17 июня 2020

В БД могут быть другие факторы, о которых я не знаю, но я также основываю этот вопрос на том, что мне сказал по этому поводу коллега.

При объявлении и установке переменной для дат, в чем разница между использованием тире и косой черты (и 0) с точки зрения производительности?

DECLARE @START DATE

SET @START = '05-01-2020'

VS.

DECLARE @START DATE

SET @START = '5/1/2020'

Используя первое, я смотрел на 5 минут и подсчет для возврата запроса. Когда я вспомнил, как мой коллега говорил мне об использовании нулей и дефисов, я попробовал первый формат, и мой запрос завершился примерно за 2 минуты. Есть ли причина для этого, или же это была удача с розыгрышем ресурсов БД?

1 Ответ

0 голосов
/ 17 июня 2020

Сходство между 05-01-2020 и 5/1/2020 заключается в том, что оба не являются ISO, нестандартными способами записи литералов даты в SQL Server (или большинстве других SQL баз данных). Лучший способ записать литерал даты на сервере SQL, для этого примера даты:

20200501

Это формат ISO, который всегда будет интерпретироваться как 1 мая 2020 года, независимо от настроек сервера. . В общем, вы должны попытаться использовать этот формат при записи литералов даты на SQL сервере.

Что касается производительности, если литерал даты хранится внутри на SQL сервере, не имеет значения, какой формат строки был раньше получал это там. Даты на SQL сервере хранятся в двоичном формате, и производительность не должна зависеть от начального скрипта для заполнения данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...