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

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

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

Saat Anda mengonversi waktu kecil nilai ke datetime , jam dan menit disalin, dan detik dan detik pecahan diatur ke 0 .

Contoh 1 – 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 dari smalldatetime ke waktu kencan .

DECLARE @thesmalldatetime smalldatetime
SET @thesmalldatetime = '2031-03-25 11:15:29'
SELECT 
  @thesmalldatetime AS 'thesmalldatetime',
  CAST(@thesmalldatetime AS datetime) AS 'datetime';

Hasil:

+---------------------+-------------------------+
| thesmalldatetime    | datetime                |
|---------------------+-------------------------|
| 2031-03-25 11:15:00 | 2031-03-25 11:15:00.000 |
+---------------------+-------------------------+

Pertama, kita dapat melihat bahwa waktu tanggal kecil nilai menggunakan 00 untuk komponen detik, meskipun kami secara eksplisit mengaturnya di 29 . Ini karena saat menggunakan waktu tanggal kecil tipe data, detik selalu nol (dan tanpa pecahan detik).

Oleh karena itu, saat kita mengonversi nilai ke datetime , nilai detik (dan pecahan detik) disetel ke nol. Apakah kita baru saja menetapkan nilai asli ke datetime di tempat pertama, detik akan tetap utuh:

DECLARE @thedatetime datetime
SET @thedatetime = '2031-03-25 11:15:29'
SELECT @thedatetime AS 'thedatetime';

Hasil:

+-------------------------+
| thedatetime             |
|-------------------------|
| 2031-03-25 11:15:29.000 |
+-------------------------+

Detik tidak hanya akan tetap utuh, tetapi juga setiap pecahan detik akan tetap utuh (tetapi hanya hingga skala 3):

DECLARE @thedatetime datetime
SET @thedatetime = '2031-03-25 11:15:29.123'
SELECT @thedatetime AS 'thedatetime';

Hasil:

+-------------------------+
| thedatetime             |
|-------------------------|
| 2031-03-25 11:15:29.123 |
+-------------------------+

Contoh 2 – Pembulatan

Inilah yang terjadi jika kita menyetel komponen detik ke nilai yang lebih tinggi sebelum menetapkannya ke waktu kecil tipe data.

DECLARE @thesmalldatetime smalldatetime
SET @thesmalldatetime = '2031-03-25 11:15:31'
SELECT 
  @thesmalldatetime AS 'thesmalldatetime',
  CAST(@thesmalldatetime AS datetime) AS 'datetime';

Hasil:

+---------------------+-------------------------+
| thesmalldatetime    | datetime                |
|---------------------+-------------------------|
| 2031-03-25 11:16:00 | 2031-03-25 11:16:00.000 |
+---------------------+-------------------------+

Jadi komponen menit sekarang dibulatkan ke menit berikutnya.

Contoh 3 – Konversi Eksplisit menggunakan CONVERT()

Ini sama dengan contoh pertama, kecuali kali ini saya menggunakan CONVERT() fungsi alih-alih CAST() .

DECLARE @thesmalldatetime smalldatetime
SET @thesmalldatetime = '2031-03-25 11:15:29'
SELECT 
  @thesmalldatetime AS 'thesmalldatetime',
  CONVERT(datetime, @thesmalldatetime) AS 'datetime';

Hasil:

+---------------------+-------------------------+
| thesmalldatetime    | datetime                |
|---------------------+-------------------------|
| 2031-03-25 11:15:00 | 2031-03-25 11:15:00.000 |
+---------------------+-------------------------+

Contoh 4 – Konversi Implisit

Berikut adalah contoh melakukan hal yang sama, tetapi menggunakan konversi tipe implisit.

DECLARE @thesmalldatetime smalldatetime, @thedatetime datetime
SET @thesmalldatetime = '2031-03-25 11:15:29'
SET @thedatetime = @thesmalldatetime
SELECT 
  @thesmalldatetime AS 'thesmalldatetime',
  @thedatetime AS 'datetime';

Hasil:

+---------------------+-------------------------+
| thesmalldatetime    | datetime                |
|---------------------+-------------------------|
| 2031-03-25 11:15:00 | 2031-03-25 11:15:00.000 |
+---------------------+-------------------------+

Jadi kami mendapatkan hasil yang sama, terlepas dari apakah itu konversi eksplisit atau implisit.

Ini adalah konversi implisit karena kami tidak menggunakan fungsi konversi untuk mengonversinya secara eksplisit. Kami hanya menetapkan nilai dari variabel satu tipe data ke variabel tipe data lain. Dalam hal ini, SQL Server melakukan konversi implisit di balik layar saat kami mencoba menetapkan smalldatetime nilai ke datetime variabel.


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

  2. dapatkan string yang dipisahkan koma dari baris

  3. Cara Memilih Subset Kolom dari Set Hasil Prosedur Tersimpan (T-SQL)

  4. Pergi dengan driver SQL Server tidak dapat terhubung dengan sukses, login gagal

  5. Pengantar Tabel Sementara di SQL Server