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

Konversikan tanggal berformat ISO ke DATETIME

Masalahnya adalah string Anda tidak format datetime SQL Server yang diterima. SQL Server mengenali ISO8601 formatnya, yaitu:

yyyy-mm-ddThh:mi:ss.mmm

Yang mana 03-02T16:48:00 untuk tanggal Anda di atas.

Lihat Gaya Tanggal Dan Waktu bagian.

Jadi pernyataan berikut akan gagal:

declare @date nvarchar(max) = '20130302T164800'

select convertedDate = cast(@date as datetime)

Jika Anda mengonversi string ke ISO8601 format, pernyataan akan berfungsi:

declare @date nvarchar(max) = '2013-03-02T16:48:00'

select convertedDate = cast(@date as datetime)

SQL Fiddle dengan demo .

Anda dapat memperbarui format Anda ke satu SQL Server yang mengenali dan mentransmisikan string ke datetime dalam satu pernyataan:

declare @date nvarchar(max) = '20130302T164800'

select cast(left(@date, 4)
  + '-' + substring(@date,5,2)
  + '-' + substring(@date,7,5)
  + ':' + substring(@date,12,2)
  + ':' + substring(@date,14,2) as datetime)

SQL Fiddle dengan demo .

Ini hanyalah sebuah contoh, Anda dapat mengonversinya ke format apa pun yang dikenali oleh SQL Server, tetapi ini mengubahnya menjadi ISO8601 . Pada dasarnya, konversikan ke format lain untuk memungkinkan konversi berfungsi.




  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 Anda mencapai batas 8060 byte per baris dan nilai 8000 per (varchar, nvarchar)?

  2. Membatasi Sesi Pengguna Serentak untuk Login Tertentu di SQL Server

  3. Bagaimana INTERSECT Bekerja di SQL Server

  4. T-SQL - Masukkan Data ke dalam Tabel Induk dan Anak

  5. Kembalikan Jenis Pemicu DML pada Tabel di SQL Server