Dynamic Datetime conversion in Power BI reports
08:25 08 Jan 2026

1. Created the TZ table with column ZoneName and TimeZoneId at Power Query using option Enter Data.

this table contains both IANA database zone name and windows registry names.

2. created the parameter named 'Zonename' with default value 'Asia/Kolkata'
3. Filtered the TZ table ZoneName column with that parameter.

4. applied the changes and in data model level i have used the Bind to Parameter option for ZoneName column from TZ table

5. note: TZ table is disconnected table and has appx. 460 records mapping b/w IANA and windows registry

TZ table looks like below

ZoneName TimeZoneId
Etc/GMT+12 Dateline Standard Time
Etc/GMT+11 UTC-11
America/Adak Aleutian Standard Time
Pacific/Honolulu Hawaiian Standard Time
Pacific/Marquesas Marquesas Standard Time
America/Anchorage Alaskan Standard Time
America/Los_Angeles Pacific Standard Time
America/Boise Mountain Standard Time
6. in web application config payload i have passed the basic filter using client API see below:

let config = {
type: 'report',
tokenType: tokenType == '0' ? models.TokenType.Aad : models.TokenType.Embed,
accessToken: accessToken,
embedUrl: embedUrl,
id: embedReportId,
permissions: permissions,
settings: {
panes: {
filters: {
visible: true
},
pageNavigation: {
visible: true
}
},
bars: {
statusBar: {
visible: true
}
}
},
filters: [
{
$schema: "http://powerbi.com/product/schema#basic",
target: {
table: "TZ",
column: "ZoneName"
},
operator: "In",
values: ["America/Adak"]
}
]
};

here i passed the IANA name to parameter and from power query getting the equivalent windows registry name.

7. Then i have created the direct table for which i want to convert the datetime fields, with below query format

table name: "Converted_Datetime" in direct query mode

let
Source = Sql.Database(Server, Database, [Query="
SELECT
CTRK.CALLTRK_IDN
,CTRK.CALL_DT AT TIME ZONE 'UTC' AT TIME ZONE '"&List.First(Table.Column(TZ,"TimeZoneId"))&"' AS CALL_DATE
,CTRK.FOLLOW_UP_DT AT TIME ZONE 'UTC' At TIME ZONE '"&List.First(Table.Column(TZ,"TimeZoneId"))&"' AS NEXT_FOLLOWUP_DATE
FROM
CALLTRK CTRK WITH(NOLOCK)
WHERE CTRK.ENTITY_ACTIVE = 'Y'
",CreateNavigationProperties=true])
in
Source

8. from this i will handle the conversion at sql level using AT TIME ZONE function, then build a relationship for my fact table(imported table)with calltrk_idn column from Converted_Datetime and data flows from  Converted_Datetime to "Fact_Call_Track"  and this will converts import mode report to mixed mode.

9. for reports with direct query I can directly call zoneId from TZ by concatenating the expression(AT TIME ZONE 'UTC' AT TIME ZONE '"&List.First(Table.Column(TZ,"TimeZoneId"))&"') in  the respective table sql query.

10. now datetime converts to user timezone at column level and now i can use at slicer, line,bar chart for trend analaysis and also datetime difference calaculation w.r.to user timezone.

It's looks like bit complex but as of now i implemented this and tested for concurrent and same user differnt timezone effectively converting datetime column to user timezone.

note: requirement is to aviod the ondemand refresh if user timezone is updated in import mode.

I’m looking for guidance or best practices to handle this scenario more cleanly or in a recommended

Thanks in advance!

sql-server powerbi dax powerquery powerbi-desktop