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

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

Artikel ini berisi contoh mengonversi datetime2 nilai ke waktu kecil nilai di SQL Server.

Salah satu manfaat mengonversi datetime2 nilai ke smalldatetime adalah Anda mengurangi ukuran penyimpanan dari 7, 8 atau 9 byte menjadi 4 byte. Namun, Anda kehilangan presisi.

datetime2 tipe data memungkinkan Anda untuk menentukan presisi pecahan detik dari 0 hingga 7. Jika Anda tidak menentukan ini, itu akan menggunakan 7 (default). Jika Anda menentukan nol (0 ), akurasinya akan mendekati detik terdekat.

waktu kecil tipe data di sisi lain, tidak memiliki pecahan detik, dan komponen detiknya selalu disetel ke nol (:00). Akurasinya sampai menit terdekat.

Saat Anda mengonversi datetime2 nilai ke smalldatetime , tanggal dan bagian dari porsi waktu disalin. Komponen detik disetel ke nol (terlepas dari nilai asli komponen detik) dan waktu dibulatkan ke menit terdekat. Setiap detik pecahan dihapus.

Contoh 1 – Konversi Implisit

Berikut adalah contoh konversi implisit antara datetime2 dan waktu kecil .

DECLARE @thedatetime2 datetime2, @thesmalldatetime smalldatetime;SET @thedatetime2 ='2025-05-21 10:15:30.1234567';SET @thesmalldatetime =@thedatetime2;PILIH @thedatetime2 SEBAGAI 'datetime2', @thesmalldatetime SEBAGAI 'smalldatetime';

Hasil:

+-----------------------------+---------------- -----+| datetime2 | smalldatetime ||----------------------------+----------------- ----|| 2025-05-21 10:15:30.1234567 | 2025-05-21 10:16:00 |+-----------------------------+-------- -------------+

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 ke waktu kecil variabel.

Dalam contoh ini kita dapat melihat bahwa smalldatetime nilai tidak termasuk pecahan detik, detik telah disetel ke nol, dan menit telah dibulatkan.

Dalam hal ini, datetime2 nilai menggunakan presisi 7. Ini karena 7 adalah nilai default. Saya tidak menentukan presisi dan oleh karena itu nilai default digunakan.

Tapi itu akan mengembalikan hasil yang sama terlepas dari ketepatan yang saya pilih. Bahkan jika saya telah menguranginya menjadi nol (yaitu menyatakannya sebagai datetime2(0) ), itu masih akan mengembalikan hasil yang sama.

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 waktu kecil .

DECLARE @thedatetime2 datetime2(0);SET @thedatetime2 ='2025-05-21 10:15:30';SELECT @thedatetime2 AS 'datetime2', CAST(@thedatetime2 AS smalldatetime) SEBAGAI 'smalldatetime'; 

Hasil:

+---------------------+---------------------+| datetime2 | smalldatetime ||---------------------+---------------------|| 2025-05-21 10:15:30 | 2025-05-21 10:16:00 |+---------------------+---------------- -----+

Dalam contoh ini saya memutuskan untuk menggunakan skala nol untuk datetime2 nilai (yaitu datetime2(0) ), namun, ini tidak memengaruhi smalldatetime . yang dihasilkan nilai.

Contoh 3 – Konversi Eksplisit menggunakan CONVERT()

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

DECLARE @thedatetime2 datetime2(0);SET @thedatetime2 ='2025-05-21 10:15:30';SELECT @thedatetime2 AS 'datetime2', CONVERT(smalldatetime, @thedatetime2) SEBAGAI 'smalldatetime'; 

Hasil:

+---------------------+---------------------+| datetime2 | smalldatetime ||---------------------+---------------------|| 2025-05-21 10:15:30 | 2025-05-21 10:16:00 |+---------------------+---------------- -----+

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bagaimana cara mendapatkan data 7 hari terakhir dari datetime saat ini hingga 7 hari terakhir di sql server

  2. Bagaimana Anda bisa memberi nama Tabel Dataset yang Anda kembalikan dalam proc tersimpan?

  3. Mengubah string yang Dipisahkan Koma menjadi baris individual

  4. SQL Pivot dengan banyak kolom

  5. Kolom tidak valid dalam daftar pilih karena tidak terdapat dalam fungsi agregat atau klausa GROUP BY