Каково общее руководство, когда вы должны использовать CAST
против CONVERT
? Есть ли проблемы с производительностью, связанные с выбором одного из других? Один ближе к ANSI-SQL?
источник
Каково общее руководство, когда вы должны использовать CAST
против CONVERT
? Есть ли проблемы с производительностью, связанные с выбором одного из других? Один ближе к ANSI-SQL?
CONVERT
является специфическим для SQL Server, CAST
является ANSI.
CONVERT
более гибок в том, что вы можете форматировать даты и т. д. Кроме того, они почти одинаковы. Если вам не нужны расширенные функции, используйте CAST
.
РЕДАКТИРОВАТЬ:
Как отмечают @beruic и @CF в комментариях ниже, возможна потеря точности при использовании неявного преобразования (то есть, когда вы не используете ни CAST, ни CONVERT). Для получения дополнительной информации см. CAST и CONVERT и, в частности, этот рисунок: Таблица преобразования типов данных SQL Server . С этой дополнительной информацией первоначальный совет остается прежним. Используйте CAST, где это возможно.
Преобразование имеет параметр стиля для преобразования даты в строку.
http://msdn.microsoft.com/en-us/library/ms187928.aspx
источник
CAST - это стандартный SQL, но CONVERT предназначен только для диалекта T-SQL. У нас есть небольшое преимущество для конвертации в случае datetime.
С помощью CAST вы указываете выражение и тип цели; в CONVERT есть третий аргумент, представляющий стиль для преобразования, который поддерживается для некоторых преобразований, например, между символьными строками и значениями даты и времени. Например, CONVERT (DATE, '1/2/2012', 101) преобразует строку буквенных символов в DATE, используя стиль 101, представляющий стандарт США.
источник
Чтобы расширить приведенный выше ответ, скопированный Шакти , я фактически смог измерить разницу в производительности между этими двумя функциями.
Я тестировал производительность вариантов решения этого вопроса и обнаружил, что стандартное отклонение и максимальное время выполнения были больше при использовании
CAST
.* Время в миллисекундах с округлением до ближайшей 1/300 секунды в соответствии с точностью
DateTime
типаисточник
То, что никто, кажется, еще не заметил, это читабельность. Имея ...
... может быть легче понять, чем ...
источник
CAST(Column1 AS int)
логичнее читать, чемCONVERT(int, Column1)
даже для длинных выраженийCAST использует стандарт ANSI. В случае переносимости это будет работать на других платформах. CONVERT специфичен для сервера sql. Но это очень сильная функция. Вы можете указать разные стили для дат
источник