Co to jest ogólne wytyczne, kiedy należy użyć CAST
kontra CONVERT
? Czy są jakieś problemy z wydajnością związane z wyborem jednego kontra drugiego? Czy ktoś jest bliżej ANSI-SQL?
źródło
Co to jest ogólne wytyczne, kiedy należy użyć CAST
kontra CONVERT
? Czy są jakieś problemy z wydajnością związane z wyborem jednego kontra drugiego? Czy ktoś jest bliżej ANSI-SQL?
CONVERT
jest specyficzny dla SQL Server, CAST
jest ANSI.
CONVERT
jest bardziej elastyczny, ponieważ można formatować daty itp. Poza tym są one prawie takie same. Jeśli nie zależy Ci na rozszerzonych funkcjach, użyj CAST
.
EDYTOWAĆ:
Jak zauważyli @beruic i @CF w komentarzach poniżej, możliwa jest utrata precyzji, gdy używana jest niejawna konwersja (to jest taka, w której nie używasz CAST ani CONVERT). Aby uzyskać więcej informacji, zobacz CAST i CONVERT, aw szczególności ta grafika: Tabela konwersji typu danych programu SQL Server . Dzięki tym dodatkowym informacjom oryginalne porady pozostają takie same. W miarę możliwości używaj CAST.
Konwertuj ma parametr stylu dla konwersji daty na ciąg znaków.
http://msdn.microsoft.com/en-us/library/ms187928.aspx
źródło
CAST jest standardowym SQL, ale CONVERT dotyczy tylko dialektu T-SQL. Mamy małą zaletę konwersji w przypadku datetime.
Za pomocą CAST podajesz wyrażenie i typ docelowy; w przypadku CONVERT istnieje trzeci argument reprezentujący styl konwersji, który jest obsługiwany w przypadku niektórych konwersji, na przykład między ciągami znaków a wartościami daty i godziny. Na przykład CONVERT (DATE, '1/2/2012', 101) konwertuje dosłowny ciąg znaków na DATE przy użyciu stylu 101 reprezentującego standard Stanów Zjednoczonych.
źródło
Aby rozwinąć powyższą odpowiedź skopiowaną przez Shakti , faktycznie byłem w stanie zmierzyć różnicę wydajności między tymi dwiema funkcjami.
Testowałem wydajność odmian rozwiązania tego pytania i stwierdziłem, że odchylenie standardowe i maksymalne czasy działania były większe przy użyciu
CAST
.* Czasy w milisekundach, w zaokrągleniu do 1/300 sekundy, zgodnie z dokładnością
DateTime
typuźródło
Coś, czego nikt jeszcze nie zauważył, to czytelność. Mający…
… Może być łatwiejsze do zrozumienia niż…
źródło
CAST(Column1 AS int)
jest bardziej logiczne do odczytania niż wCONVERT(int, Column1)
przypadku długich wyrażeńCAST wykorzystuje standard ANSI. W przypadku przenośności będzie to działać na innych platformach. CONVERT jest specyficzny dla serwera SQL. Ale to bardzo silna funkcja. Możesz określić różne style dla dat
źródło