Artikel ini berisi contoh mengonversi tanggal nilai ke datetime nilai di SQL Server.
Saat Anda mengonversi tanggal nilai ke datetime , informasi tambahan ditambahkan ke nilai. Ini karena waktu tanggal tipe data berisi informasi tanggal dan waktu. Tanggal tipe data, di sisi lain, hanya berisi informasi tanggal.
Contoh 1 – Konversi Implisit
Berikut adalah contoh konversi implisit antara tanggal dan waktu kencan .
DECLARE @thedate date, @thedatetime datetime SET @thedate = '2020-12-01' SET @thedatetime = @thedate SELECT @thedate AS 'date', @thedatetime AS 'datetime';
Hasil:
+------------+-------------------------+ | date | datetime | |------------+-------------------------| | 2020-12-01 | 2020-12-01 00:00: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 tanggal nilai ke datetime variabel.
Kita dapat melihat bahwa tanggal variabel hanya berisi informasi tanggal, sedangkan datetime variabel berisi informasi tanggal dan waktu.
Saat Anda mengonversi antara tanggal dan waktu kencan , komponen waktu diatur ke 00:00:00.000
. Ini karena nilai tanggal tidak berisi informasi waktu apa pun, jadi SQL Server tidak dapat mengetahui jam berapa yang Anda inginkan (jika ada).
Contoh 2 – Ubah Waktu
Jika Anda perlu mengubah waktu (tetapi tetap pada tanggal yang sama), Anda dapat menggunakan DATEADD()
berfungsi untuk melakukan hal itu.
DECLARE @thedate date, @thedatetime datetime SET @thedate = '2020-12-01' SET @thedatetime = @thedate SET @thedatetime = DATEADD(hour, 8, @thedatetime) SELECT @thedate AS 'date', @thedatetime AS 'datetime';
Hasil:
+------------+-------------------------+ | date | datetime | |------------+-------------------------| | 2020-12-01 | 2020-12-01 08:00:00.000 | +------------+-------------------------+
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 tanggal dan waktu kencan .
DECLARE @thedate date SET @thedate = '2020-12-01' SELECT @thedate AS 'date', CAST(@thedate AS datetime) AS 'datetime';
Hasil:
+------------+-------------------------+ | date | datetime | |------------+-------------------------| | 2020-12-01 | 2020-12-01 00:00:00.000 | +------------+-------------------------+
Jadi kita mendapatkan hasil yang sama dengan konversi implisit.
Kita juga bisa mengatur waktu seperti ini:
DECLARE @thedate date SET @thedate = '2020-12-01' SELECT @thedate AS 'date', DATEADD(hour, 8, CAST(@thedate AS datetime)) AS 'datetime';
Hasil:
+------------+-------------------------+ | date | datetime | |------------+-------------------------| | 2020-12-01 | 2020-12-01 08:00:00.000 | +------------+-------------------------+
Contoh 4 – Konversi Eksplisit menggunakan CONVERT()
Berikut adalah contoh konversi eksplisit menggunakan CONVERT()
fungsi alih-alih CAST()
.
DECLARE @thedate date SET @thedate = '2020-12-01' SELECT @thedate AS 'date', CONVERT(datetime, @thedate) AS 'datetime';
Hasil:
+------------+-------------------------+ | date | datetime | |------------+-------------------------| | 2020-12-01 | 2020-12-01 00:00:00.000 | +------------+-------------------------+
Dan menyesuaikan waktu:
DECLARE @thedate date SET @thedate = '2020-12-01' SELECT @thedate AS 'date', DATEADD(hour, 8, CONVERT(datetime, @thedate)) AS 'datetime';
Hasil:
+------------+-------------------------+ | date | datetime | |------------+-------------------------| | 2020-12-01 | 2020-12-01 08:00:00.000 | +------------+-------------------------+