Каково общее руководство по использованию CAST
по сравнению с CONVERT
? Существуют ли какие-либо проблемы с производительностью, связанные с выбором одного из них? Ближе к ANSI-SQL?
T-SQL Cast против конвертирования
Ответ 1
CONVERT
специфичен для SQL Server, CAST
- ANSI.
CONVERT
более гибкий, поскольку вы можете форматировать даты и т.д. Кроме этого, они почти одинаковы. Если вам не нужны расширенные функции, используйте CAST
.
EDIT:
Как отмечено в нижеприведенных комментариях @beruic и @C-F, возможна потеря точности при использовании неявного преобразования (то есть, когда вы не используете ни CAST, ни CONVERT). Для получения дополнительной информации см. CAST и CONVERT и, в частности, эту графику: SQL Server Диаграмма преобразования типов данных. С этой дополнительной информацией первоначальный совет по-прежнему остается прежним. Используйте CAST, где это возможно.
Ответ 2
Convert имеет параметр стиля для конвертации даты в строку.
Ответ 3
CAST - это стандартный SQL, но CONVERT не является (только для диалекта T-SQL), у нас есть небольшое преимущество для преобразования в случае datetime
с CAST, вы указываете выражение и тип цели; с CONVERT, это третий аргумент, представляющий стиль для преобразования, который поддерживается для некоторых преобразований, например, между символом строк и значений даты и времени. Например, CONVERT (DATE, '1/2/2012', 101) преобразует буквальная строка символов в DATE, используя стиль 101, представляющий стандарт Соединенных Штатов.
С уважением,
Ответ 4
CAST использует стандарт ANSI. В случае переносимости это будет работать на других платформах. CONVERT специфичен для сервера sql. Но это очень сильная функция. Вы можете указать разные стили для дат