Мне было интересно, может ли кто-нибудь помочь мне понять, почему эти два критерия не возвращают одни и те же наборы результатов. Мне кажется странным, что SQL Server 2008 R2 не знал бы использовать смещение при ограничении данных. Есть лучший способ сделать это? Насколько я могу судить, критерий 2 - единственный способ получить правильные данные.Использование критериев DateTimeOffset как WHERE в запросе SQL Server 2008
-- Criteria One
OriginationDateTimeOffset >= TODATETIMEOFFSET('2010-10-20', '-08:00') AND
OriginationDateTimeOffset < TODATETIMEOFFSET('2010-10-21', '-08:00')
-- Criteria Two
SWITCHOFFSET(OriginationDateTimeOffset, '-08:00') >= TODATETIMEOFFSET('2010-10-20', '-08:00') AND
SWITCHOFFSET(OriginationDateTimeOffset, '-08:00') < TODATETIMEOFFSET('2010-10-21', '-08:00')
Но почему я должен переключаться смещение? У него уже есть привязка к нему, поэтому, на мой взгляд, мне нужно только установить смещение критериев, которые я передаю, и это должно сделать все остальное. Мне кажется, что SQL Server должен переключить все на 0 offset перед выполнением запроса. Зачем мне нужно использовать switchoffset, чтобы поместить смещение в тот же часовой пояс, что и другое смещение. Кажется излишним и ненужным. –