Artikel ini berisi contoh mengonversi waktu kecil nilai ke datetime nilai di SQL Server.
Saat Anda mengonversi waktu kecil nilai ke datetime , jam dan menit disalin, dan detik dan detik pecahan diatur ke 0
.
Contoh 1 – 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 dari smalldatetime ke waktu kencan .
DECLARE @thesmalldatetime smalldatetime SET @thesmalldatetime = '2031-03-25 11:15:29' SELECT @thesmalldatetime AS 'thesmalldatetime', CAST(@thesmalldatetime AS datetime) AS 'datetime';
Hasil:
+---------------------+-------------------------+ | thesmalldatetime | datetime | |---------------------+-------------------------| | 2031-03-25 11:15:00 | 2031-03-25 11:15:00.000 | +---------------------+-------------------------+
Pertama, kita dapat melihat bahwa waktu tanggal kecil nilai menggunakan 00
untuk komponen detik, meskipun kami secara eksplisit mengaturnya di 29
. Ini karena saat menggunakan waktu tanggal kecil tipe data, detik selalu nol (dan tanpa pecahan detik).
Oleh karena itu, saat kita mengonversi nilai ke datetime , nilai detik (dan pecahan detik) disetel ke nol. Apakah kita baru saja menetapkan nilai asli ke datetime di tempat pertama, detik akan tetap utuh:
DECLARE @thedatetime datetime SET @thedatetime = '2031-03-25 11:15:29' SELECT @thedatetime AS 'thedatetime';
Hasil:
+-------------------------+ | thedatetime | |-------------------------| | 2031-03-25 11:15:29.000 | +-------------------------+
Detik tidak hanya akan tetap utuh, tetapi juga setiap pecahan detik akan tetap utuh (tetapi hanya hingga skala 3):
DECLARE @thedatetime datetime SET @thedatetime = '2031-03-25 11:15:29.123' SELECT @thedatetime AS 'thedatetime';
Hasil:
+-------------------------+ | thedatetime | |-------------------------| | 2031-03-25 11:15:29.123 | +-------------------------+
Contoh 2 – Pembulatan
Inilah yang terjadi jika kita menyetel komponen detik ke nilai yang lebih tinggi sebelum menetapkannya ke waktu kecil tipe data.
DECLARE @thesmalldatetime smalldatetime SET @thesmalldatetime = '2031-03-25 11:15:31' SELECT @thesmalldatetime AS 'thesmalldatetime', CAST(@thesmalldatetime AS datetime) AS 'datetime';
Hasil:
+---------------------+-------------------------+ | thesmalldatetime | datetime | |---------------------+-------------------------| | 2031-03-25 11:16:00 | 2031-03-25 11:16:00.000 | +---------------------+-------------------------+
Jadi komponen menit sekarang dibulatkan ke menit berikutnya.
Contoh 3 – Konversi Eksplisit menggunakan CONVERT()
Ini sama dengan contoh pertama, kecuali kali ini saya menggunakan CONVERT()
fungsi alih-alih CAST()
.
DECLARE @thesmalldatetime smalldatetime SET @thesmalldatetime = '2031-03-25 11:15:29' SELECT @thesmalldatetime AS 'thesmalldatetime', CONVERT(datetime, @thesmalldatetime) AS 'datetime';
Hasil:
+---------------------+-------------------------+ | thesmalldatetime | datetime | |---------------------+-------------------------| | 2031-03-25 11:15:00 | 2031-03-25 11:15:00.000 | +---------------------+-------------------------+
Contoh 4 – Konversi Implisit
Berikut adalah contoh melakukan hal yang sama, tetapi menggunakan konversi tipe implisit.
DECLARE @thesmalldatetime smalldatetime, @thedatetime datetime SET @thesmalldatetime = '2031-03-25 11:15:29' SET @thedatetime = @thesmalldatetime SELECT @thesmalldatetime AS 'thesmalldatetime', @thedatetime AS 'datetime';
Hasil:
+---------------------+-------------------------+ | thesmalldatetime | datetime | |---------------------+-------------------------| | 2031-03-25 11:15:00 | 2031-03-25 11:15:00.000 | +---------------------+-------------------------+
Jadi kami mendapatkan hasil yang sama, terlepas dari apakah itu konversi eksplisit atau implisit.
Ini adalah konversi implisit karena kami tidak menggunakan fungsi konversi untuk mengonversinya secara eksplisit. Kami hanya menetapkan nilai dari variabel satu tipe data ke variabel tipe data lain. Dalam hal ini, SQL Server melakukan konversi implisit di balik layar saat kami mencoba menetapkan smalldatetime nilai ke datetime variabel.