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

Konversi tanggal dan budaya:Perbedaan antara DATE dan DATETIME

ISO-8601 untuk DATETIME (tipe yang lebih lama) entah bagaimana "rusak" atau "diadaptasi" (tergantung pada apakah Anda melihatnya sebagai bug atau fitur) - Anda perlu menggunakan YYYYMMDD (tanpa tanda hubung apa pun) untuk membuatnya berfungsi terlepas dari pengaturan bahasa.

Untuk DATE atau DATETIME2(n) tipe data, ini telah diperbaiki dan format ISO-8601 yang "tepat" YYYY-MM-DD akan selalu ditafsirkan dengan benar.

-- OK because of "adapted" ISO-8601
SET LANGUAGE GERMAN;
DECLARE @dt DATETIME='20170113'; 

SELECT @dt;

SELECT CAST('20170113' AS DATETIME);
SELECT CONVERT(DATETIME, '20170113'); 

-- OK because of DATETIME2(n)
SET LANGUAGE GERMAN;
DECLARE @dt2 DATETIME2(0) = '2017-01-13'; 

SELECT @dt2;

SELECT CAST('2017-01-13' AS DATETIME2(0));
SELECT CONVERT(DATETIME2(0), '2017-01-13'); 

Ini adalah kekhasan DATETIME ketik (dan bukan satu-satunya....) - daftar saja, ketahui tentang itu - dan lanjutkan (artinya:jangan gunakan DATETIME lagi - gunakan DATE atau DATETIME2(n) sebagai gantinya - jauh lebih baik untuk diajak bekerja 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. SQL Server Express vs express localdb

  2. Konversi 'datetime' menjadi 'datetimeoffset' di SQL Server (Contoh T-SQL)

  3. Apa gunanya Katalog Awal dalam string koneksi SQL Server?

  4. 5 Kebiasaan Pemantauan Basis Data dari DBA yang Berhasil

  5. Kode VBA untuk Menambahkan Tabel Tertaut dengan Kunci Utama