Tuang atau Konversikan datetime?

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.

Larutan

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

Komentar (6)

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.

Pembaruan

Periksa ini: http://blog.sqlauthority.com/2012/11/21/sql-server-display-datetime-in-specific-format-sql-in-sixty-seconds-033-video/

Komentar (2)