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

Cách chuyển đổi chuỗi DateTime thành DateTime trong SQL Server

Trong SQL Server 2008 bạn có thể sử dụng datetimeoffset kiểu dữ liệu.

SELECT [Result] = CONVERT(datetimeoffset, '2005-08-08T00:01:00+01:00', 127)

Đầu ra:

Result
----------------------------------
2005-08-08 00:01:00.0000000 +01:00

Trong SQL Server 2005 và sớm hơn, bạn có thể tính toán ngày UTC và bù đắp:

SELECT [LocalDate], [OffsetMinutes], [UtcDate]
FROM
(
    SELECT [IsoDate] = '2007-08-08T00:01:00+01:00'
) A
OUTER APPLY
(
    SELECT [LocalDate] = CONVERT(datetime, LEFT([IsoDate], 19), 126)
    , [OffsetMinutes] =
        CASE SUBSTRING([IsoDate], 20, 1)
            WHEN '+' THEN +1
            WHEN '-' THEN -1
        END
        * DATEDIFF(minute, 0,
            CAST(SUBSTRING([IsoDate], 21, 5) + ':00' AS datetime))
    WHERE [IsoDate] LIKE '____-__-__T__:__:__[+-]__:__'
) B
OUTER APPLY
(
    SELECT [UtcDate] = DATEADD(minute, -[OffsetMinutes], [LocalDate])
) C

Đầu ra:

LocalDate               OffsetMinutes UtcDate
----------------------- ------------- -----------------------
2007-08-08 00:01:00.000 60            2007-08-07 23:01:00.000


  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 - Tạo tài khoản đăng nhập mới có vai trò sysadmin từ tài khoản không có vai trò sysadmin

  2. Chức năng tích hợp để viết hoa chữ cái đầu tiên của mỗi từ

  3. Truy vấn cây máy chủ SQL

  4. Làm thế nào để loại bỏ bất kỳ số cuối cùng nào khỏi một chuỗi?

  5. Làm cách nào để tắt các Ràng buộc cho tất cả các bảng và kích hoạt nó?