0
여러 시간대의 사용자를 처리하고 특정 시간대에 대해 날짜를 올바르게 표시 할 수 있어야하는 응용 프로그램을 만들고 있습니다.여러 시간대를 처리하는 시간대에서
나는 아래의 코드를 예제로 만들었지 만, 올바른 방법으로 시간대 문제를 처리하는 것이 무엇인지 혼란스러워합니다.
데이터베이스에 모든 날짜를 UTC로 저장하고 이에 따라 AT TIME ZONE을 사용하여 저장하는 것이 가장 좋습니까? 아니면 다른 방법으로 생각해야합니까?
Create Table #Test
(
SampleDate datetimeoffset(7)
)
Create Table #Test2
(
SampleDate datetimeoffset(7)
)
Create Table #Test3
(
SampleDate datetime
)
insert into #Test select getdate()
insert into #Test2 select getdate() AT TIME ZONE 'AUS Eastern Standard Time'
insert into #Test3 select getdate()
select
SampleDate,
SampleDate AT TIME ZONE 'AUS Eastern Standard Time',
SampleDate AT TIME ZONE 'AUS Central Standard Time',
SampleDate AT TIME ZONE 'Aus Central W. Standard Time'
from #Test
select
SampleDate,
SampleDate AT TIME ZONE 'AUS Eastern Standard Time',
SampleDate AT TIME ZONE 'AUS Central Standard Time',
SampleDate AT TIME ZONE 'Aus Central W. Standard Time'
from #Test2
select
SampleDate,
SampleDate AT TIME ZONE 'AUS Eastern Standard Time',
SampleDate AT TIME ZONE 'AUS Central Standard Time',
SampleDate AT TIME ZONE 'Aus Central W. Standard Time'
from #Test3
drop table #Test
drop table #Test2
drop table #Test3
테스트
2017-09-24 10:59:47.4233333 +00:00
2017-09-24 20:59:47.4233333 +10:00
2017-09-24 20:29:47.4233333 +09:30
2017-09-24 19:44:47.4233333 +08:45
Test2를가
2017-09-24 10:59:47.4230000 +10:00
2017-09-24 10:59:47.4230000 +10:00
2017-09-24 10:29:47.4230000 +09:30
2017-09-24 09:44:47.4230000 +08:45
테스트 3가
2017-09-24 10:59:47.423
2017-09-24 10:59:47.423 +10:00
2017-09-24 10:59:47.423 +09:30
2017-09-24 10:59:47.423 +08:45
다른 시간대가 필요하면'datetimeoffset'을 사용하십시오. 그것이 그곳에있는 것입니다. –
감사합니다 @ GordonLinoff,하지만 당신은 테이블에 무엇을 저장해야합니까? 항상 UTC를 저장합니까, 아니면 특정 사용자의 날짜/시간과 오프셋을 저장합니까? – Philip
. . 오, 그게 어떻게 사용되고 있는지에 달렸습니다. 나는 그들을 같은 시간대에 저장하는 경향이 있다고 생각하지만 여러 지역 시간대에 저장하는 데는 유효한 이유가 있습니다. –