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

Konversi 'datetime2' menjadi 'date' di SQL Server (Contoh T-SQL)

Artikel ini berisi contoh mengonversi datetime2 nilai untuk tanggal nilai di SQL Server.

Saat Anda mengonversi datetime2 nilai untuk tanggal tipe data, Anda kehilangan porsi waktu. Namun, Anda juga mengurangi ukuran penyimpanan dari antara 7 dan 9 byte menjadi 3 byte. Bagaimanapun, Anda hanya akan melakukan konversi ini jika Anda tidak membutuhkan porsi waktu.

datetime2 tipe data mencakup tanggal dan waktu dengan bagian pecahan detik antara 0 dan 7 (ini tergantung pada berapa banyak pecahan detik yang ditetapkan untuk itu). Akurasinya adalah 100 nanodetik.

Tanggal tipe data di sisi lain, tidak termasuk waktu, dan memiliki akurasi 1 hari.

Contoh 1 – Konversi Implisit

Berikut adalah contoh konversi implisit antara datetime2 dan tanggal .

DECLARE 
  @thedatetime2 datetime2, 
  @thedate date;
SET @thedatetime2 = '2025-05-21 10:15:30.1234567';
SET @thedate = @thedatetime2;
SELECT 
  @thedatetime2 AS 'datetime2',
  @thedate AS 'date';

Hasil:

+-----------------------------+------------+
| datetime2                   | date       |
|-----------------------------+------------|
| 2025-05-21 10:15:30.1234567 | 2025-05-21 |
+-----------------------------+------------+

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 datetime2 nilai untuk tanggal variabel.

Di sini kita dapat melihat bahwa tanggal nilai hanya menyertakan tanggal (tanpa komponen waktu).

Dalam contoh ini, datetime2 nilai menggunakan presisi default (yang menghasilkan 7 tempat desimal). Ini dapat dikurangi ke angka berapa pun dan hasil konversi akan sama.

DECLARE 
  @thedatetime2 datetime2(0), 
  @thedate date;
SET @thedatetime2 = '2025-05-21 10:15:30.1234567';
SET @thedate = @thedatetime2;
SELECT 
  @thedatetime2 AS 'datetime2',
  @thedate AS 'date';

Hasil:

+---------------------+------------+
| datetime2           | date       |
|---------------------+------------|
| 2025-05-21 10:15:30 | 2025-05-21 |
+---------------------+------------+

Contoh 2 – 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 datetime2 dan tanggal .

DECLARE @thedatetime2 datetime2(4);
SET @thedatetime2 = '2025-05-21 10:15:30.1234';
SELECT 
  @thedatetime2 AS 'datetime2',
  CAST(@thedatetime2 AS date) AS 'date'; 

Hasil:

+--------------------------+------------+
| datetime2                | date       |
|--------------------------+------------|
| 2025-05-21 10:15:30.1234 | 2025-05-21 |
+--------------------------+------------+

Contoh 3 – Konversi Eksplisit menggunakan CONVERT()

Berikut adalah contoh konversi eksplisit menggunakan CONVERT() fungsi alih-alih CAST() .

DECLARE @thedatetime2 datetime2(4);
SET @thedatetime2 = '2025-05-21 10:15:30.1234';
SELECT 
  @thedatetime2 AS 'datetime2',
  CONVERT(date, @thedatetime2) AS 'date'; 

Hasil:

+--------------------------+------------+
| datetime2                | date       |
|--------------------------+------------|
| 2025-05-21 10:15:30.1234 | 2025-05-21 |
+--------------------------+------------+

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Meratakan rentang waktu yang berpotongan

  2. Tidak dapat menghapus skema , karena tidak ada atau Anda tidak memiliki izin. - Tutorial SQL Server / TSQL Bagian 29

  3. Cara menjatuhkan semua Kunci Utama dari semua tabel di Database SQL Server - Tutorial SQL Server / TSQL Bagian 65

  4. Terapkan fungsionalitas paging (lewati / ambil) dengan kueri ini

  5. Cara Menemukan Semua Pelanggaran Batasan di Database SQL Server