Forum Discussion
Convert DateTimeOffset to DateTime
Thanks, what/where do I do to insert that code? I am currently using Power BI Desktop, I clicked Get Data and then specified SQL Server, then provided connection info and imported the table I was interested in. My table User consists of few columns:
- CreatedDate (the data in this column stored in UTC.)
- InternalIdentifier (string - unique value per row)
- Type (contains few possible values of type TINYINT)
I want to see a chart(s) showing users' distribution in time (taking Type into accoun) where the Time will be converted to a certain offset.
In my Power BI Desktop I saw the table (User) I imported and its fields, so I did right click over CreatedDate but could not find there anything enabling me to put any code/script which would change the formatting.
Right click over CreatedDate column
Can you briefly explain and/or point me to the documentation which would show where is that "connection" point enabling me to add code/script so it is associated with the DB columns displayed in the report?
One more connected question - am I supposed to use Power Query only or it is possible to use .NET languages as well?
So we only have one table: user. Right?
Where does that offset-value come from?
Another column or is it a fixed value or some conditional values?
Pictures of data or data model would help!
Before: ...
After: ...
- AverageAsker10 years agoHelper I
The table User contains multiple rows which need to be displayed in a chart.
The offset is stored in another table [Settings] in the column TimeZoneOffset
What I would like to know is the place where I could insert Power Query to transform my data, can you help with that?
- ImkeF10 years agoCommunity Champion
In the query editor.
Edit your first table and "lookup" the data from your settings table by merging it.
Then add a custom column which add/subtracts the values.
- AverageAsker10 years agoHelper I
Thank you, what is Power Query equivalent to .NET TimeZoneInfo.FindSystemTimeZoneById ? My Settings table stores Time Zone info by using standard IDs, like Pacific Standard Time and I need to convert values in my DateTimeOffset column to the time zone stored in the Settings table, this is how I do that in C#:
TimeSpan timeZoneOffsetSpan = TimeZoneInfo.FindSystemTimeZoneById(settings.TimeZone).GetUtcOffset(UserCreatedDateTime);
This gives me a difference between the time in the time zone stored in my Settings table and UTC for UserCreatedDateTime. And I am executing that line of the code just once for all rows in my User table because the purpose of the code above is to find out current offset taking into account such timezone's features like DayLightSaving.
And now I can simply add that offset (which could be positive or negative) against every value in my User.CreateDateTime column, in C# I am doing that by using DateTimeOffset.ToOffset:
DateTimeOffset convertedOffset = UserCreatedDateTime.ToOffset(timeZoneOffsetSpan)
So I need to be able to do the same conversions in my Power BI report but I couldnot find any Power Query function which can do the same what TimeZoneInfo.FindSystemTimeZoneById does, if that function existed it would cover my first line of C# code and then I would need to find an equivalent to TimeZoneInfo.FindSystemTimeZoneById. DateTimeZone.SwitchZone is probably what I need but I first need to know the offset corresponding to my time zone and then I would be able to supply that offset as 2nd and 3rd parameters to that function.
So, to finalize, I need Power BI analog for TimeZoneInfo.FindSystemTimeZoneById