Jawaban:
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.
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.
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
jenis
Sesuatu yang tampaknya belum dicatat adalah keterbacaan. Memiliki ...
CONVERT(SomeType,
SomeReallyLongExpression
+ ThatMayEvenSpan
+ MultipleLines
)
... mungkin lebih mudah dipahami daripada ...
CAST(SomeReallyLongExpression
+ ThatMayEvenSpan
+ MultipleLines
AS SomeType
)
CAST(Column1 AS int)
lebih logis untuk dibaca daripada CONVERT(int, Column1)
untuk ekspresi panjang