Forum Discussion
Power BI Service Semantic Model Refresh - date issue
Power BI Service shows different date than Power BI Desktop after Semantic Model refresh
Environment
- Data Source: SharePoint List
- Power BI Desktop: Latest version
- Power BI Service
- Time Zone: Singapore (UTC+8)
Issue Summary
I have a SharePoint List containing business trip data.
The same date is displayed correctly in:
- Outlook Calendar
- SharePoint List
- Power BI Desktop (Data View)
- Power BI Desktop (Report View)
However, after refreshing the Semantic Model in Power BI Service, the date becomes 1 day earlier.
Example:
| Outlook Calendar | 2 Aug 2026 | 4 Aug 2026 |
| SharePoint List | 2 Aug 2026 | 4 Aug 2026 |
| Power BI Desktop | 2 Aug 2026 | 4 Aug 2026 |
| Power BI Service (after refresh) | 1 Aug 2026 | 3 Aug 2026 |
Additional Findings
Before applying my date conversion step
Power Query receives the following values from SharePoint:
To convert them to Singapore dates, I use:
After this transformation:
Validation Performed
Power Query - Correct
Data View - Correct
Data Type - Both columns are:
(not Date/Time)
Report View in Desktop - Correct
Publish to Power BI Service
Immediately after publish: - Correct
After Semantic Model Refresh
Date becomes:
Other Observations
- Re-publishing the PBIX temporarily fixes the issue.
- Refreshing the Semantic Model afterwards causes the dates to shift again.
- Changing Semantic Model timezone from UTC to Singapore did not resolve the issue.
- Credentials are OAuth2 and refresh completes successfully.
- Report and Semantic Model lineage is correct.
- SharePoint List data itself remains correct.
Question
Why would:
- Power Query
- Data View
- Report View
- Publish result
all show the correct date,
but after a Power BI Service Semantic Model refresh, the date shifts back by one day?
Has anyone seen differences between Power BI Desktop and Power BI Service when using:
Hii Hachi0805
Avoid DateTimeZone types altogether and use plain duration math instead, which isn't subject to the same folding reinterpretation:
Table.TransformColumns(#"Renamed Columns", { {"StartDate", each if _ = null then null else Date.From(DateTime.From(_) + #duration(0,8,0,0)), type date}, {"EndDate", each if _ = null then null else Date.From(DateTime.From(_) + #duration(0,8,0,0)), type date} })
2 Replies
- rohit1991Super User
Hii Hachi0805
Avoid DateTimeZone types altogether and use plain duration math instead, which isn't subject to the same folding reinterpretation:
Table.TransformColumns(#"Renamed Columns", { {"StartDate", each if _ = null then null else Date.From(DateTime.From(_) + #duration(0,8,0,0)), type date}, {"EndDate", each if _ = null then null else Date.From(DateTime.From(_) + #duration(0,8,0,0)), type date} })- Hachi0805New Member
Thank you Rohit. it works! now i can keep Singapore Time even after refresh deta model!! really appreciate your help.