Apa pedoman umum tentang kapan Anda harus menggunakan CAST
versus CONVERT
? Apakah ada masalah kinerja terkait dengan memilih satu dibandingkan yang lain? Apakah satu lebih dekat ke ANSI-SQL?
sumber
Apa pedoman umum tentang kapan Anda harus menggunakan CAST
versus CONVERT
? Apakah ada masalah kinerja terkait dengan memilih satu dibandingkan yang lain? Apakah satu lebih dekat ke ANSI-SQL?
CONVERT
khusus SQL Server, CAST
adalah ANSI.
CONVERT
lebih fleksibel karena Anda dapat memformat tanggal dll. Selain itu, mereka hampir sama. Jika Anda tidak peduli dengan fitur yang diperluas, gunakan CAST
.
EDIT:
Seperti dicatat oleh @beruic dan @CF dalam komentar di bawah, ada kemungkinan hilangnya presisi ketika konversi implisit digunakan (yaitu di mana Anda tidak menggunakan CAST atau CONVERT). Untuk informasi lebih lanjut, lihat CAST dan CONVERT dan khususnya grafik ini: Grafik Konversi Jenis Data SQL Server . Dengan informasi tambahan ini, saran asli masih tetap sama. Gunakan CAST jika memungkinkan.
Konversi memiliki parameter gaya untuk konversi tanggal ke string.
http://msdn.microsoft.com/en-us/library/ms187928.aspx
sumber
CAST adalah SQL standar, tetapi CONVERT hanya untuk dialek T-SQL. Kami memiliki sedikit keuntungan untuk mengkonversi dalam kasus datetime.
Dengan CAST, Anda menunjukkan ekspresi dan jenis target; dengan CONVERT, ada argumen ketiga yang mewakili gaya untuk konversi, yang didukung untuk beberapa konversi, seperti antara string karakter dan nilai tanggal dan waktu. Misalnya, CONVERT (DATE, '1/2/2012', 101) mengubah string karakter literal ke DATE menggunakan gaya 101 yang mewakili standar Amerika Serikat.
sumber
Untuk memperluas jawaban di atas yang disalin oleh Shakti , saya sebenarnya dapat mengukur perbedaan kinerja antara kedua fungsi.
Saya sedang menguji kinerja variasi solusi untuk pertanyaan ini dan menemukan bahwa standar deviasi dan runtimes maksimum lebih besar saat menggunakan
CAST
.* Waktu dalam milidetik, dibulatkan ke terdekat 1/300 dari detik sesuai ketepatan
DateTime
jenissumber
Sesuatu yang tampaknya belum dicatat adalah keterbacaan. Memiliki ...
... mungkin lebih mudah dipahami daripada ...
sumber
CAST(Column1 AS int)
lebih logis untuk dibaca daripadaCONVERT(int, Column1)
untuk ekspresi panjangCAST menggunakan standar ANSI. Dalam hal portabilitas, ini akan bekerja pada platform lain. CONVERT khusus untuk server sql. Tetapi fungsinya sangat kuat. Anda dapat menentukan gaya yang berbeda untuk tanggal
sumber