현지 시간으로 datetime 값을 표시하려고합니다. 기본적으로 Azure SQL 데이터베이스는 날짜와 시간을 UTC로 저장합니다.이 방법은 없습니다. (이것은 전제 SQL Server에서 마이그레이션 할 때 고통 스러웠습니다.) 중앙 유럽 시간에 저장된 시간 값을 표시하고 싶습니다.Azure SQL 표시 현지 시간
현지 시간은 11:30 (CET)입니다. UTC 시간은 10시 30 분입니다.
DECLARE @TestTime DATETIME;
SET @TestTime = '2016-11-02 10:30:00'
SELECT @TestTime
--Returns 2016-11-02 10:30:00
SELECT @TestTime AT TIME ZONE 'Central European Standard Time'
--Returns 02 November 2016 10:30:00 +01:00
어쨌든 2016-11-02 11:30:00을 반환해야합니다. 이제 재미있는 부분 :
here 제시 한 바와 같이 :
SELECT convert(DATETIME,@TestTime AT TIME ZONE 'Central European Standard Time',1)
--Returns 2016-11-02 09:30:00 So instead of adding the timezonedifference it subtracts it.
이 작동하지만, 나를 아프게 :
SELECT DATEADD(MINUTE,DATEPART(tz,@TestTime AT TIME ZONE 'Central European Standard Time'),@TestTime)
--Returns 2016-11-02 11:30:00
비슷한 솔루션은 here을 제안되었다, 그러나 함께 재생 문자열 연산. 내 의심은 AT TIME ZONE에서 뭔가 잘못되었다는 것입니다. 11:30 +1이 아니라 10:30 +1이 아니어야합니다.
현지 시간으로 UTC 시간을 표시하는 적절한 방법이 있습니까? 이 "해킹"은 매우 지저분한 것으로 느껴질 수 있습니다. 특히 어느 시점에서든 작업이 중단 될 수 있습니다 (예 : Microsoft에서 수정/버그가 있음).
감사합니다!
로컬 날짜 시간을 무엇으로 표시하려고합니까? –
@drediske [CET] (https://www.timeanddate.com/time/zones/cet). 이 예제에서보고 싶은 것은 11:30입니다. 실제로 내 db에는 몇 가지 다른 시간대의 사용자가 있으며 일광 절약 시간제도 재생되므로 다소 복잡합니다.) 저장된 UTC 시간 값을 원하는 현지 시간으로 변환 할 수있는 것으로 귀결됩니다. – vacip
이 주석이 달린 -1을 좋아합니다 ... 투표자가 나를 밝혀 주면 질문을 개선하고 싶습니다. – vacip