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

Tanggal SQL Server Format tergantung pengguna?

Jika Anda perlu menentukan tanggal waktu menggunakan string, Anda harus menggunakan aman , format yang tidak bergantung pada bahasa.

Di SQL Server, itulah format ISO-8601 (sedikit disesuaikan), dan pada dasarnya mendukung dua format aman untuk DATETIME yang selalu berfungsi - terlepas dari pengaturan bahasa, regional, dan format tanggal Anda:

YYYYMMDD              (e.g. 20121231  for 31st of December 2012)  if you need date only

YYYY-MM-DDTHH:mm:ss   (e.g. 2012-12-31T21:05:00 for 31st of December 2012, 9:05pm)

Catatan:

  • format pertama hanya tanggal tanpa tanda hubung atau pembatas!

  • format kedua memiliki tanda hubung untuk tanggal (dapat dihilangkan juga), dan ada T tetap sebagai pembatas antara tanggal dan bagian waktu dari string

Pembaruan: sesuai komentar terakhir Anda (pada bahasa default yang berbeda untuk dua pengguna) - coba ini:

-- this is how your `SA` interprets the string as datetime....
SET LANGUAGE english
SELECT CAST('2012-11-30 23:59' AS DATETIME)   

Bekerja dengan baik...

-- this is how your British user interprets teh string as datetime
SET LANGUAGE british
SELECT CAST('2012-11-30 23:59' AS DATETIME)

Ini mencoba menafsirkan string sebagai tanggal 11 bulan 30 tahun 2012 dan jelas, itu gagal....



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Setara dengan MySQL PADA DUPLICATE KEY UPDATE di Sql Server

  2. Akses TimeZoneInfo dari SQL 2005 Server

  3. T-sql - tentukan apakah nilainya bilangan bulat

  4. Permintaan untuk memeriksa apakah suatu kolom dapat dibatalkan

  5. Solusi untuk DATEDIFF() Mengabaikan SET DATEFIRST di SQL Server (Contoh T-SQL)