В моем веб-приложении все значения даты преобразуются в UTC перед передачей в базу данных SQL, а затем преобразуются обратно в локальное время всякий раз, когда они отображаются в приложении. Таким образом, нижняя строка заключается в том, что все даты указаны в UTC в базе данных.Изменение часового пояса SQL Server 2008
Это работало нормально, пока я не начал разработку отчета. В Crystal Reports нет возможности (я могу обнаружить) для преобразования часового пояса, поэтому мне нужно сделать преобразование в SQL перед передачей значения в отчет.
SQL Server, похоже, имеет гораздо более ограниченную возможность конвертировать значения даты и времени. Единственная функция, которую я вижу, - SWITCHOFFSET. Проблема с этой функцией заключается в том, что она не знает о дневном свете, которая, по-видимому, является основным недостатком. В asp.net я могу передать значение datetime с часовым поясом, и оно автоматически преобразует его в UTC, принимая во внимание любые необходимые корректировки времени на летнее время.
В SQL, хотя, вместо того чтобы сказать что-то вроде
SWITCHOFFSET (SomeDate,"Eastern Time"),
теперь я должен сказать
SWITCHOFFSET(SomeDate, "-4:00").
Но что произойдет, если я потянув данные из таблицы и я прошу всех данные за март, месяц, когда начинается переход на летнее время? Независимо от того, некоторые из них будут неправильными. Я могу сказать: -4: 00 или -5: 00, но, очевидно, не оба.
Есть ли какая-то другая функция, чтобы приспособиться к этому, так как, откровенно говоря, кажется, что SWITCHOFFSET наполовину выпекается, если он не знает, как сделать переход на летнее время.
К сожалению, я на Azure и он не поддерживает CLR. –
Тогда, сэр, у вас есть проблема. Просто так. Одна из причин, по которой я избегаю азара от Лазуры - другая - высокая цена и неспособность больших баз данных. – TomTom
Я не вижу его как проблему Лазури. Я думаю, что это проблема с часовым поясом, в целом, и пребывание в среде с несколькими арендаторами делает проблему более очевидной. – 1c1cle