2016-02-17 4 views
0

Мне нужно отображать время даты в соответствии с выбранным пользователем часовым поясом. Таким образом, я поддерживаю все даты в базе данных в GMT.Обработка часовых поясов в SQL Server

Когда я извлекаю его из SQL - я использую следующий подход (например: UK), который я не уверен, будет ли он работать для часовых поясов, у которых есть дневная подсветка.

SELECT CONVERT(datetime,SWITCHOFFSET(CONVERT(datetimeoffset,GetUTCDate()),'-00:00')) 

Во время дневного света экономии, он должен быть

SELECT CONVERT(datetime,SWITCHOFFSET(CONVERT(datetimeoffset,GetUTCDate()),'-01:00')) 

Как включить смещение в соответствии с дневным светом экономии? Я спасаю выбранный пользователь Время отображаемое имя зоны ID в базе данных, которую я даю второй параметр SWITCHOFFSET

Благодарности

+1

В программном обеспечении, которое используется во многих часовых поясах, я всегда позволял отображать на нем слой приложения. У пользователя есть часовой пояс, выбранный в их операционной системе, и .NET и т. Д. Имеют способы быстрее конвертировать время, чем пытаться понять все это в SQL. –

ответ

1

Вы обычно пусть слой UI или выше уровень абстракции, справиться с этим. База данных и бизнес-логика могут наилучшим образом работать с временем UTC. В противном случае вы должны принять смещение в учетной записи во всей своей бизнес-логике, которая использует время из базы данных.

+0

Да. Зачем это делать в SQL - где вам нужно рассказать SQL Server о часовом поясе пользователя и запрограммировать все это самостоятельно - когда на самом деле у вас отличный уровень. Это трансформация переднего конца, сделайте это там. – TomTom

Смежные вопросы