Вы хотите хранить все свои значения базы данных в виде UTC по мере возможности, поскольку они являются универсальными, как вы собираетесь получить. Вы можете отображать их как локальные моменты в вашем прикладном уровне, поскольку эти параметры часто очень специфичны для отдельного просмотра данных.
Если у вас есть конкретный срок поставки каждый день, например, 6 вечера, и вы хотите знать, где это время попадает в UTC, вы можете построить время и преобразовать его в UTC. Большинство часовых поясов, которые наблюдают какую-то форму DST-флопа назад и вперед 1h по местному времени, но не в UTC.
Обычно в вашей базе данных есть функции, такие как MAKEDATE()
или MAKETIME()
, которые могут строить произвольные моменты времени. Используйте их, чтобы выделить время в выбранном вами часовом поясе, затем переключитесь на UTC, чтобы они «фиксировались».
Каждый раз, когда у вас есть код, который «должен быть изменен два раза в год», у вас будет код, который не будет изменить, а затем произойдет хаос. Не делай этого. Вы просто настраиваете себя на неудачу.
Как замечание, все это в SQL может быть очень грязным, поскольку базы данных не всегда имеют актуальную информацию о часовом поясе, если они не сильно зависят от операционной системы. Ваша операционная система, как правило, лучше оборудована, она должна быть исправлена, если все изменилось, как it did in 2005. Даже это был полный беспорядок, потому что смесь исправленных и непересекающихся систем находилась в постоянном конфликте.
хранить все в utc и выполнять все сравнения/вычисления с помощью utc. то вы конвертируете в «местный» TZ только для показа. –