Forum Discussion

Anonymous's avatar
Anonymous
Not applicable
2 years ago
Solved

Extract month name from a date-range

I have a "Memberships" table which contains this data:   Membership start date.           Membership end date           Membership type 2024-01-15 2024-02-28 Type-1 2024-02-03 2024-03...
  • danextian's avatar
    2 years ago

    Hi Anonymous ,

     

    You can try the sample M code below.

    let
        Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("i45WMjTVNzDUNzIwMlHSUTKy0DcwgnFCKgtSdQ2VYnWilQyMkcSNDPSBfGRFRmBFRob6hgYgcWOgeF5pTg5M2lgpNhYA", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type nullable text) meta [Serialized.Text = true]) in type table [#"Membership start date" = _t, #"Membership end date" = _t, #"Membership type" = _t]),
        #"Changed Type" = Table.TransformColumnTypes(Source,{{"Membership start date", type date}, {"Membership end date", type date}, {"Membership type", type text}}),
        #"Added Custom" = Table.AddColumn(#"Changed Type", "Dates + One Month", each let 
    start = [Membership start date],
    end = if [Membership end date] = null then Date.From(DateTime.LocalNow()) else [Membership end date],
    Diff = Number.Round(Number.From((end - start)/( 365.25 / 12 )) ,0 )
    in List.Transform({0..Diff}, each Date.AddMonths(start, _))),
        #"Expanded Dates + One Month" = Table.ExpandListColumn(#"Added Custom", "Dates + One Month"),
        #"Added Custom1" = Table.AddColumn(#"Expanded Dates + One Month", "Period", each Date.ToText([#"Dates + One Month"], "MMM-yy")),
        #"Changed Type1" = Table.TransformColumnTypes(#"Added Custom1",{{"Dates + One Month", type date}, {"Period", type text}})
    in
        #"Changed Type1"

    You can then filter the query based on your desired date range.