Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

Contoh Mengonversi 'tanggal' menjadi 'waktu-waktu' di SQL Server (T-SQL)

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 |
+------------+-------------------------+

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Buat Hubungan di SQL Server 2017

  2. Tambahkan kolom dengan nilai default ke tabel yang ada di SQL Server

  3. Len() vs panjang data() di SQL Server 2005

  4. SQL Server Sisipan file CSV secara massal dengan tanda kutip yang tidak konsisten

  5. SQL Server - Hubungan Pendek Permintaan?