Forum Discussion
Convert json DateTime format
Hi,
How do I convert a column containing a date and time in the json format to DateTime. My dates are like this /Date(1457355600000)
I was referring to change your query name so that your table name in the data model doesn't have the GUID and such in it and ? and such.
13 Replies
- Greg_DecklerCommunity Champion
My understanding of JSON Dates is that it is the number of milliseconds from a reference date of 1/1/1970. Therefore, I would strip out all the text characters, if you need assistance with that, let me know but you could do it with a MID that grabs the first character after the ( and grabs the number of characters up until the ). Make sure it is a number format and then you can use the following DAX:
Date = DATE(1970,1,1) + [JSONDate]/1000/86400
Basically, divide by 1,000 to get seconds and then by 86,400, the number of seconds in a day (you could just divide by 864,000. This gives you the number of days since 1/1/1970 and then you just add that to a date of 1/1/1970. I got back "3/7/2016 1:00:00 PM"
- SandraInTheSunNew Member
Greg_Deckler This worked like a champ for me! Thanks so much!
- android1Post Patron
Hi,
Thanks for your assistance. I'm having a bit of trouble with this. I have stripped out the text using extract. I am left with values such as 453808709000. When I change this column to a decimal number I get 4.53809E+11.
I perform the following DAX formula -> Temp1 = DATE(1970,1,1) + [Column1.DutyTimeFrom]/1000/86400.
[Column1.DutyTimeFrom] contains 4.53809E+11.
i get the following error message -> The value for 'Column1.DutyTimeFrom' cannot be determined. Either 'Column1.DutyTimeFrom' doesn't exist, or there is no current row for a column named 'Column1.DutyTimeFrom'.
- Greg_DecklerCommunity Champion
android1 - Can you post a screen shot of your data model so that I can see your columns? The error indicates that it can't find [Column1.DutyTimeFrom]. This could be because you need to put the table name in front of it or that there is a typo or something.
- GrumeloAdvocate II
I would not recommend to do the transformation in a DAX calculated column.
You can do it with Power Query by Transforming an existing column.
The step to execute to do the transformation
= Table.TransformColumns(#"<previous step name>",{{"<column name to update>", DateFromJson}})The code of the Power Query custom function
let DateFromJson = (date as any) as any => let input = if date is null then "/Date(00000000000000)/"else date, Stripped = if Text.StartsWith(input, "/Date(") and Text.EndsWith(input, ")/") then Text.Range(input, 6, Text.Length(input) - 8) else error "Not a date", Position = Text.PositionOfAny(Stripped, {"+", "-"}, 1), Parts = if Position < 0 then { Stripped, "0" } else { Text.Range(Stripped, 0, Position), Text.Range(Stripped, Position) }, NumberParts = { Number.FromText(Parts{0}), Number.FromText(Parts{1}) }, Result = Date.FromText("1/1/1970") + #duration(0, 0, 0, (NumberParts{0} + 36000 * NumberParts{1}) / 1000), output = if Date.Year(Result) = 1970 then null else Result in output in DateFromJson - AnonymousNot applicable
How I can convert this format "2019-10-14T19:46:53.2751336Z" to "2019-10-14 19:46:53"?
Thaks!
- AnonymousNot applicable
Anonymous try cleaning the column with the Clean function on the ribbon. It worked for me.