Artikel ini berisi contoh mengonversi waktu kecil nilai ke datetime nilai di SQL Server.
waktu kecil tipe data tidak memiliki pecahan detik, dan komponen detiknya selalu disetel ke nol (:00). Akurasinya sampai menit terdekat.
waktu kencan tipe data di sisi lain, termasuk bagian detik pecahan 3 digit, dan akurasinya dibulatkan ke peningkatan .000, .003, atau .007 detik.
Saat Anda mengonversi waktu kecil nilai ke datetime , waktu kecil nilai disalin ke datetime nilai. Detik pecahan diatur ke 0.
Biasanya, Anda sebaiknya mengonversi ke datetime2 tipe data alih-alih waktu tanggal . Melakukan hal ini akan memberikan peningkatan akurasi, saat menggunakan ukuran penyimpanan yang sama. Namun, jika Anda benar-benar membutuhkannya datetime , berikut beberapa contohnya.
Contoh 1 – Konversi Implisit
Berikut adalah contoh konversi implisit antara smalldatetime dan waktu kencan .
DECLARE @thesmalldatetime smalldatetime, @thedatetime datetime; SET @thesmalldatetime = '2025-05-21 10:15:30'; SET @thedatetime = @thesmalldatetime; SELECT @thesmalldatetime AS 'smalldatetime', @thedatetime AS 'datetime';
Hasil:
+---------------------+-------------------------+ | smalldatetime | datetime | |---------------------+-------------------------| | 2025-05-21 10:16:00 | 2025-05-21 10:16:00.000 | +---------------------+-------------------------+
Ini adalah konversi implisit karena kami tidak menggunakan fungsi konversi (seperti yang di bawah ini) untuk mengonversinya secara eksplisit. Dalam hal ini, SQL Server melakukan konversi implisit di balik layar saat kami mencoba menetapkan smalldatetime nilai ke datetime variabel.
Dalam contoh ini kita dapat melihat bahwa smalldatetime nilai tidak termasuk pecahan detik, detik telah disetel ke nol, dan menit telah dibulatkan dari nilai sebenarnya yang saya coba tetapkan.
Namun, waktu tanggal nilai termasuk bagian pecahan 3 digit yang disetel ke nol.
Contoh 2 – Mengubah Bagian Pecahan
Meskipun bagian pecahan disetel ke nol, setelah Anda mengonversi nilainya menjadi waktu-tanggal , Anda sekarang dapat mengubah bagian pecahan (dan bagian detik dalam hal ini).
Dalam contoh ini, saya menggunakan DATEADD()
berfungsi untuk mengubah pecahan detik datetime nilai.
DECLARE @thesmalldatetime smalldatetime, @thedatetime datetime; SET @thesmalldatetime = '2025-05-21 10:15:30'; SET @thedatetime = @thesmalldatetime; SELECT @thesmalldatetime AS 'smalldatetime', @thedatetime AS 'datetime', DATEADD(millisecond, 123, @thedatetime) AS 'datetime Modified';
Hasil (menggunakan keluaran vertikal):
smalldatetime | 2025-05-21 10:16:00 datetime | 2025-05-21 10:16:00.000 datetime Modified | 2025-05-21 10:16:00.123
Contoh 3 – Konversi Eksplisit menggunakan CAST()
Berikut ini contoh konversi eksplisit. Dalam hal ini, saya menggunakan CAST()
berfungsi langsung di dalam SELECT
pernyataan untuk secara eksplisit mengonversi antara smalldatetime dan waktu kencan .
DECLARE @thesmalldatetime smalldatetime; SET @thesmalldatetime = '2025-05-21 10:15:30'; SELECT @thesmalldatetime AS 'thesmalldatetime', CAST(@thesmalldatetime AS datetime) AS 'datetime';
Hasil:
+---------------------+-------------------------+ | thesmalldatetime | datetime | |---------------------+-------------------------| | 2025-05-21 10:16:00 | 2025-05-21 10:16:00.000 | +---------------------+-------------------------+
Contoh 4 – Konversi Eksplisit menggunakan CONVERT()
Berikut adalah contoh konversi eksplisit menggunakan CONVERT()
fungsi alih-alih CAST()
.
DECLARE @thesmalldatetime smalldatetime; SET @thesmalldatetime = '2025-05-21 10:15:30'; SELECT @thesmalldatetime AS 'thesmalldatetime', CONVERT(datetime, @thesmalldatetime) AS 'datetime';
Hasil:
+---------------------+-------------------------+ | thesmalldatetime | datetime | |---------------------+-------------------------| | 2025-05-21 10:16:00 | 2025-05-21 10:16:00.000 | +---------------------+-------------------------+
Seperti yang disebutkan, pertimbangkan untuk mengonversi ke datetime2 tipe data alih-alih datetime . Melakukan hal ini memberikan peningkatan akurasi, saat menggunakan ukuran penyimpanan yang sama.