T-SQL Cast против конвертирования

Каково общее руководство по использованию CAST по сравнению с CONVERT? Существуют ли какие-либо проблемы с производительностью, связанные с выбором одного из них? Ближе к ANSI-SQL?

Ответ 1

CONVERT специфичен для SQL Server, CAST - ANSI.

CONVERT более гибкий, поскольку вы можете форматировать даты и т.д. Кроме этого, они почти одинаковы. Если вам не нужны расширенные функции, используйте CAST.

EDIT:

Как отмечено в нижеприведенных комментариях @beruic и @C-F, возможна потеря точности при использовании неявного преобразования (то есть, когда вы не используете ни CAST, ни CONVERT). Для получения дополнительной информации см. CAST и CONVERT и, в частности, эту графику: SQL Server Диаграмма преобразования типов данных. С этой дополнительной информацией первоначальный совет по-прежнему остается прежним. Используйте CAST, где это возможно.

Ответ 3

CAST - это стандартный SQL, но CONVERT не является (только для диалекта T-SQL), у нас есть небольшое преимущество для преобразования в случае datetime

с CAST, вы указываете выражение и тип цели; с CONVERT, это третий аргумент, представляющий стиль для преобразования, который поддерживается для некоторых преобразований, например, между символом строк и значений даты и времени. Например, CONVERT (DATE, '1/2/2012', 101) преобразует буквальная строка символов в DATE, используя стиль 101, представляющий стандарт Соединенных Штатов.

С уважением,

Ответ 4

CAST использует стандарт ANSI. В случае переносимости это будет работать на других платформах. CONVERT специфичен для сервера sql. Но это очень сильная функция. Вы можете указать разные стили для дат