I was trying to convert a timezone from CST to UTC inside a data flow. A quick google gave me that CST is in UTC-6:00, so it should add 6 hours.
The following derived column function for some reason only added 5 hours:
toUTC(localDatetime, 'CST')
Moreover, CurrentUTC('CST') Gave me the correct 6 hours difference, so I had to rewrite this function like this:
LocalDatetime + hours(toInteger((currentUTC('CST') - currentUTC()) / 1000 / 60 / 60))
// Minus between timestamps gives difference in milliseconds
Is this intended behavior? I am worried that when the timezone "shifts" this code will break, so using toUTC would be the best solution, but for some reason it gives incorrect results now
toUTC() converts a datetime to UTC time zone based on the Daylight-Saving Time effectiveness.
When you are converting from CST to UCT, if your date falls when Daylight saving is effective, then it adds +5 to your date else adds +6 to your date.
Example:
Derived column expression: toUTC(toTimestamp(Date_UTC), 'CST')