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

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

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

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

waktu kencan tipe data di sisi lain, termasuk bagian detik pecahan 3 digit, dan akurasinya dibulatkan ke peningkatan .000, .003, atau .007 detik.

Saat Anda mengonversi waktu kecil nilai ke datetime , waktu kecil nilai disalin ke datetime nilai. Detik pecahan diatur ke 0.

Biasanya, Anda sebaiknya mengonversi ke datetime2 tipe data alih-alih waktu tanggal . Melakukan hal ini akan memberikan peningkatan akurasi, saat menggunakan ukuran penyimpanan yang sama. Namun, jika Anda benar-benar membutuhkannya datetime , berikut beberapa contohnya.

Contoh 1 – Konversi Implisit

Berikut adalah contoh konversi implisit antara smalldatetime dan waktu kencan .

DECLARE 
  @thesmalldatetime smalldatetime,
  @thedatetime datetime;
SET @thesmalldatetime = '2025-05-21 10:15:30';
SET @thedatetime = @thesmalldatetime;
SELECT 
  @thesmalldatetime AS 'smalldatetime',
  @thedatetime AS 'datetime';

Hasil:

+---------------------+-------------------------+
| smalldatetime       | datetime                |
|---------------------+-------------------------|
| 2025-05-21 10:16:00 | 2025-05-21 10:16: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 smalldatetime nilai ke datetime variabel.

Dalam contoh ini kita dapat melihat bahwa smalldatetime nilai tidak termasuk pecahan detik, detik telah disetel ke nol, dan menit telah dibulatkan dari nilai sebenarnya yang saya coba tetapkan.

Namun, waktu tanggal nilai termasuk bagian pecahan 3 digit yang disetel ke nol.

Contoh 2 – Mengubah Bagian Pecahan

Meskipun bagian pecahan disetel ke nol, setelah Anda mengonversi nilainya menjadi waktu-tanggal , Anda sekarang dapat mengubah bagian pecahan (dan bagian detik dalam hal ini).

Dalam contoh ini, saya menggunakan DATEADD() berfungsi untuk mengubah pecahan detik datetime nilai.

DECLARE 
  @thesmalldatetime smalldatetime,
  @thedatetime datetime;
SET @thesmalldatetime = '2025-05-21 10:15:30';
SET @thedatetime = @thesmalldatetime;
SELECT 
  @thesmalldatetime AS 'smalldatetime',
  @thedatetime AS 'datetime',
  DATEADD(millisecond, 123, @thedatetime) AS 'datetime Modified';

Hasil (menggunakan keluaran vertikal):

smalldatetime     | 2025-05-21 10:16:00
datetime          | 2025-05-21 10:16:00.000
datetime Modified | 2025-05-21 10:16:00.123

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 smalldatetime dan waktu kencan .

DECLARE @thesmalldatetime smalldatetime;
SET @thesmalldatetime = '2025-05-21 10:15:30';
SELECT 
  @thesmalldatetime AS 'thesmalldatetime',
  CAST(@thesmalldatetime AS datetime) AS 'datetime';

Hasil:

+---------------------+-------------------------+
| thesmalldatetime    | datetime                |
|---------------------+-------------------------|
| 2025-05-21 10:16:00 | 2025-05-21 10:16:00.000 |
+---------------------+-------------------------+

Contoh 4 – Konversi Eksplisit menggunakan CONVERT()

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

DECLARE @thesmalldatetime smalldatetime;
SET @thesmalldatetime = '2025-05-21 10:15:30';
SELECT 
  @thesmalldatetime AS 'thesmalldatetime',
  CONVERT(datetime, @thesmalldatetime) AS 'datetime';

Hasil:

+---------------------+-------------------------+
| thesmalldatetime    | datetime                |
|---------------------+-------------------------|
| 2025-05-21 10:16:00 | 2025-05-21 10:16:00.000 |
+---------------------+-------------------------+

Seperti yang disebutkan, pertimbangkan untuk mengonversi ke datetime2 tipe data alih-alih datetime . Melakukan hal ini memberikan peningkatan akurasi, saat menggunakan ukuran penyimpanan yang sama.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Panggil prosedur tersimpan dengan parameter bernilai tabel dari Java

  2. SQL Server SELECT ke tabel yang ada

  3. Bagaimana cara memperbarui tabel besar dengan jutaan baris di SQL Server?

  4. Kueri yang Mengembalikan Daftar Hierarki Jenis Peristiwa Pemicu di SQL Server

  5. Pratinjau publik pertama SQL Server 2019 :CTP 2.0