Forum Discussion
convert to date format
Hi,
I am getting below error in date column. could you please help to convert to date format (mm/dd/yyyy)
"power bi DataFormat.Error: We couldn't parse the input provided as a Date value. Details: 44201"
Thanks in advance
suren
Hi, Anonymous
column:
Column = IFERROR(FORMAT(('Table'[Column1]-DATE(1899,12,30))+DATE(1899,12,30),"mm/dd/yyyy"),BLANK())measure:
Measure = IFERROR(FORMAT((MAX('Table'[Column1])DATE(1899,12,30))+DATE(1899,12,30),"mm/dd/yyyy"),BLANK())result:
Zerrick
Did I answer your question? Mark my post as a solution!
11 Replies
- amitchandakSuper User
Anonymous , do you have all values as number , that can days from 1-1-1970 or 1-1-1900
Date =date(1900,1,1) + [Days]
or
Date =date(1970,1,1) + [Days]
or
Can you share sample data and sample output in table format? Or a sample pbix after removing sensitive data.
- AnonymousNot applicable
Hi Amit,
My date field contains below values.Could you please suggest to format as mm/dd/yyyy
Thanks
- zzccFrequent Visitor
Hi, Anonymous
To create a measure like this:
Measure = (MAX('Table'[Column1])-DATE(1899,12,30))+DATE(1899,12,30)or create a column:
col = ([Column1]-DATE(1899,12,30))+DATE(1899,12,30)result:
Zerrick
Did I answer your question? Mark my post as a solution!
- AnonymousNot applicable
Thank you zerick.
But requirement is to convert this serial format(44236, 44239) to MM/DD/YYYY in query editor
Suren
- zzccFrequent Visitor
Hi, Anonymous
measure
Column = var _1=([Column1]-DATE(1899,12,30))+DATE(1899,12,30) return FORMAT(_1,"mm/dd/yyyy")column
Measure = var _1=(MAX('Table'[Column1])-DATE(1899,12,30))+DATE(1899,12,30) return FORMAT(_1,"mm/dd/yyyy")result:
In power query
let Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("i45WMtY3MtU3MjAyVIrViVYyMTEyNgOzgOJGqOKWSrGxAA==", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type nullable text) meta [Serialized.Text = true]) in type table [Column1 = _t]), #"Changed Type" = Table.TransformColumnTypes(Source,{{"Column1", type text}}), #"Added Custom" = Table.AddColumn(#"Changed Type", "Custom", each try (Duration.From([Column1])) otherwise null), #"Added Custom1" = Table.AddColumn(#"Added Custom", "Custom.1", each try(Date.From([Column1])) otherwise null), #"Changed Type1" = Table.TransformColumnTypes(#"Added Custom1",{{"Custom", type duration}}), #"Added Custom2" = Table.AddColumn(#"Changed Type1", "Custom.2", each #date(1899,12,30)+[Custom]), #"Merged Columns" = Table.CombineColumns(Table.TransformColumnTypes(#"Added Custom2", {{"Custom.1", type text}, {"Custom.2", type text}}, "en-US"),{"Custom.1", "Custom.2"},Combiner.CombineTextByDelimiter("", QuoteStyle.None),"Merged"), #"Removed Columns1" = Table.RemoveColumns(#"Merged Columns",{"Custom", "Column1"}), #"Changed Type2" = Table.TransformColumnTypes(#"Removed Columns1",{{"Merged", type date}}) in #"Changed Type2"Zerrick
Did I answer your question? Mark my post as a solution!
- mahoneypatMicrosoft Employee
You can add a custom column (or adapt a transform column step) with this formula
= try Date.From([Date]) otherwise Date.AddDays(#date(1900,1,1), Number.FromText([Date]))
Pat
- zzccFrequent Visitor
Hi, mahoneypat
You are absolutely right, obviously I am still not familiar with the PoweQuery language. It definitely saves a lot of steps.
But what confuses me is that in Excel it seems that the first day is January 1, 1900, and the result I get after converting the numbers to dates in Power BI indicates that the first day should be December 30, 1899, which is a little strange.
But your formula is definitely correct anyway. Thanks for sharing.Anonymous if you want to get result in Power Query, here is the improved M code:
let Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("i45WMtY3MtU3MjAyVIrViVYyMTEyNgOzgOJGqOKWYBaYUFCKjQUA", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type nullable text) meta [Serialized.Text = true]) in type table [Column1 = _t]), #"Changed Type" = Table.TransformColumnTypes(Source,{{"Column1", type text}}), a = Table.AddColumn(#"Changed Type", "1899-12-30", each try Date.From([Column1]) otherwise Date.AddDays(#date(1899,12,30), Number.FromText([Column1])))//, //b = Table.AddColumn(a, "1900-1-1", each try Date.From([Column1]) otherwise Date.AddDays(#date(1900,1,1), Number.FromText([Column1]))) in a//bZerrick
Did I answer your question? Mark my post as a solution!