Apa yang harus dipilih: Cast
atau Convert
untuk datetimes (Microsoft SQL Server)?
Saya telah melihat MSDN Specifications. Sekilas tampaknya tidak ada perbedaan, kecuali sintaksnya:
Sintaks untuk CAST:
CAST ( expression AS data_type [ ( length ) ] )
Sintaks untuk CONVERT:
CONVERT ( data_type [ ( length ) ] , expression [ , style ] )
Dan CAST adalah ANSI-standard, yang membuatnya lebih portabel di berbagai platform database yang berbeda.
convert
memiliki parameter opsional style
, dan saya menyarankan untuk menggunakan convert
daripada cast
. Ini membantu untuk menghindari kebingungan.
Sebagai contoh, jika Anda menulis cast('20130302' as date)
, apa yang akan Anda dapatkan? 2 Maret atau 3 Februari?
Juga, jika anda ingin format tertentu ketika casting ke tanggal ke string, anda terikat untuk menggunakan convert
Tautan MSDN Specification yang telah Anda posting, Jika Anda membaca dengan seksama, Anda akan menemukan jawaban Anda di bawah bagian G:
G. Using CAST and CONVERT with datetime data
Contoh berikut menampilkan tanggal dan waktu saat ini, menggunakan CAST untuk mengubah tanggal dan waktu saat ini ke tipe data karakter, dan kemudian menggunakan CONVERT menampilkan tanggal dan waktu dalam format ISO 8901.
SELECT
GETDATE() AS UnconvertedDateTime,
CAST(GETDATE() AS nvarchar(30)) AS UsingCast,
CONVERT(nvarchar(30), GETDATE(), 126) AS UsingConvertTo_ISO8601 ;
GO
Berikut adalah set hasilnya.
UnconvertedDateTime UsingCast UsingConvertTo_ISO8601
----------------------- ------------------------------ ------------------------------
2006-04-18 09:58:04.570 Apr 18 2006 9:58AM 2006-04-18T09:58:04.570
(1 baris yang terpengaruh)
Anda bisa melihat dengan jelas perbedaannya.