Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Как да конвертирате низ DateTime в DateTime в SQL Server

В SQL Server 2008 можете да използвате datetimeoffset тип данни.

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

Изход:

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

В SQL Server 2005 и по-рано можете да изчислите UTC датата и отместването:

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

Изход:

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. Извличане на данни от съхранена процедура, която има множество набори от резултати

  2. Какво е значението на SELECT ... FOR XML PATH(' ),1,1)?

  3. Как мога да се удостоверя в SQL SERVER 2008 с потребител на Active Directory, но без Windows удостоверяване

  4. създаване на адресна база данни

  5. SQL - Изваждане на изчерпваща стойност от редове