2013-11-21 6 views
1
SELECT GETDATE() 

SQL Server의 위 쿼리는 서버가 미국에 있기 때문에 미국에서 현재 날짜와 시간을 반환합니다. 유럽의 현재 날짜와 시간을 검색하려면 어떻게 수정해야합니까?Sql Server가 유럽에서 현재 날짜 시간을 가져옵니다.

+3

유럽의 어느 표준 시간대입니까? 대륙의 정의가 일정하지 않고 * n * 시간대에 걸쳐 있으므로 유럽을 용도에 맞게 정의하십시오. –

+2

"미국의 현재 날짜와 시간"- 아쉽게도. 미국에는 또한 4 시간대가 있습니다. 'GETDATE()'는 서버의 현지 시간을 반환하는데, 미국 시간이 아닌 시간대와 국가에 관계없이. –

+0

.. 대부분의 서버가 여러 시간대의 클라이언트에서 사용되기 때문에 더 많은 DBA가 서버의 시스템 클럭을 GMT로 설정하고 있으므로 GetDate()는 로컬이 아닌 UTC 또는 GGMT 시간을 반환합니다. –

답변

4

이 시도 : 설정 @Offset =

그리니치 표준시 (GMT)에 대한
  • 0 - 영국,
  • 중앙 유럽 표준시 (CET) -Netherlands, Germnany, 프랑스 등에 대한
  • 1 동부 유럽 표준시 (EET) 체코 슬로바키아, 헝가리
  • 2 등

    Set @Offset = 0, 1, 2 ...
    Declare @offset tinyInt = 0
    Select GetUtcDate() + @offset/24.0

0

datetimeoffset 데이터 형식 (SQL Server 2008 이상 필요)과 함께 SwitchDateTimeOffset 함수를 사용하십시오.

데모 쿼리 :이됩니다 시나리오에서

CREATE TABLE TimeZone (ID int identity, 
        LocalTime datetimeoffset); 
INSERT INTO TimeZone values ('2008-05-21 17:50:01.1234567 -08:00'), 
          ('2008-05-21 18:50:01.1234567 -08:00'); 
SELECT * FROM TimeZone; 
SELECT ID, SWITCHOFFSET(LocalTime,'+01:00') [time for new time zone] 
    FROM TimeZone; 
DROP TABLE TimeZone; 

:

SELECT SWITCHOFFSET(SYSDATETIMEOFFSET(),'+01:00') 

바와 같이 p.campbell 지적, 당신은 여전히 ​​당신의 목적을 위해 '유럽'을 나타내는 시간대 결정해야합니다.

관련 문제