Since you are on SQL Server 2008, you could use the built-in functionality of the DATETIMEOFFSET
datatype, and the SWITCHOFFSET
function.
You could do something like:
INSERT INTO dbo.YourTargetTable( ...... )
SELECT
SWITCHOFFSET(TODATETIMEOFFSET(YourSourceTime, '+04:00'), '-09:00'),
.......
TODATETIMEOFFSET
converts your "regular" date without any timezone information into a DATETIMEOFFSET
type with a time zone (of your source location), and then you can apply a SWITCHOFFSET
call to that value to "switch" your date/time to your target location's time zone.
This can be done in the scope of the INSERT....SELECT
statement - no separate "row-by-row" updating necessary.