Forum Discussion

kevlarmpowered's avatar
8 years ago
Solved

Automatically detect date versus datetime

Is there anyway to get PowerBI to automatically detect date instead of defaulting to datetime for columns?  My datasource already has the data stored as date (not datetime), but when I import it, Pow...
  • MarcelBeug's avatar
    MarcelBeug
    8 years ago

    You can convert all datetime columns to date as illustrated in the query below:

     

    let
        Source = #table(type table[Date1 = datetime, Text = text, Date2 = datetime, Number = number],
            {{#datetime(2018,1,1,0,0,0),"Hello",#datetime(2018,1,2,0,0,0),1},
             {#datetime(2018,1,3,0,0,0),"World",#datetime(2018,1,4,0,0,0),2}}),
        TransformList = List.Transform(Table.ColumnsOfType(Source,{type datetime}), each {_, type date}),
        DatetimesToDates = Table.TransformColumnTypes(Source,TransformList)
    in
        DatetimesToDates

     

    Should you have 1 or a few columns that must stay on datetime, you can remove those like in the query below in which "Date2" is removed (and will stay on datetime):

     

    let
        Source = #table(type table[Date1 = datetime, Text = text, Date2 = datetime, Number = number],
            {{#datetime(2018,1,1,0,0,0),"Hello",#datetime(2018,1,2,0,0,0),1},
             {#datetime(2018,1,3,0,0,0),"World",#datetime(2018,1,4,0,0,0),2}}),
        DatetimeColumns = Table.ColumnsOfType(Source,{type datetime}),
        FilteredColumns = List.Difference(DatetimeColumns,{"Date2"}),
        TransformList = List.Transform(FilteredColumns, each {_, type date}),
        DatetimesToDates = Table.TransformColumnTypes(Source,TransformList)
    in
        DatetimesToDates