Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

Chuyển đổi ngày có định dạng ISO thành DATETIME

Vấn đề là chuỗi của bạn không định dạng ngày giờ của SQL Server được chấp nhận. SQL Server nhận ra ISO8601 định dạng, đó là:

yyyy-mm-ddThh:mi:ss.mmm

Đó sẽ là 2013-03-02T16:48:00 cho ngày của bạn ở trên.

Xem Kiểu Ngày và Giờ phần.

Vì vậy, câu lệnh sau sẽ không thành công:

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

select convertedDate = cast(@date as datetime)

Nếu bạn chuyển đổi chuỗi thành ISO8601 định dạng, câu lệnh sẽ hoạt động:

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

select convertedDate = cast(@date as datetime)

SQL Fiddle với bản demo .

Bạn có thể cập nhật định dạng của mình lên một SQL Server nhận dạng và truyền chuỗi thành ngày giờ trong một câu lệnh:

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 với bản trình diễn .

Đây chỉ là một ví dụ, bạn có thể chuyển đổi nó sang bất kỳ định dạng nào được SQL Server công nhận, nhưng điều này sẽ chuyển nó thành ISO8601 . Về cơ bản, hãy chuyển đổi nó sang một định dạng khác để cho phép chuyển đổi hoạt động.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cơ sở dữ liệu hệ thống máy chủ SQL - Bảo trì MSDB

  2. SQL Server và mất kết nối khi đang giao dịch

  3. Đăng nhập công cụ cơ sở dữ liệu SQL Server 2008 không thành công cho người dùng quản trị viên trong windows 7

  4. Tác vụ dọn dẹp bảo trì SQL hoạt động nhưng không xóa

  5. CHÈN SỐ LƯỢNG LỚN SQL Server từ Linux