There's a problem with the switchoffset() and todatetimeoffset() functions when used in combination with INNER JOIN. This is the error I get: "The timezone provided to builtin function switchoffset is invalid." I have verifed that the input to the time_zone parameter is within the valid range and not NULL. I'm building a localized time table by joining a series of timestamps with time zone offset rules, and I have not found a way to work around this problem. Tested on developer and standard editions of SQL Server 2008 and 2008 R2, with and without service packs, and on different operating systems and processor architectures.