I have a report with date range as filters that works fine in the English environment. But it is causing an error in the French environment when the date filter is applied.
With SQL Profiler, I found that Power BI is sending "CAST( N'2017-07-14 00:00:01' AS datetime)" command to SQL server. However, in the French environment, the SQL server is interpreting 14 as the month and failed to convert the string to date. Hence, Power BI desktop failed to visualize data.
How do I force Power BI sending date in ISO format? e.g. CAST( N'20170714' AS datetime)
First, in your french environment, restart your Power Bi desktop->files->Options and settings->Regional Settings->select your local based on your french environment as follows.
Second, when you get data from SQL Server, edit the query navigator, right click the date column->Change type-> Using local->Ok as follows, you will get expected date format.
More details, please review this article for further analysis.
Thank you very much for the reply. I tried these settings. It only changes the data format displayed in Power BI. But it doesn't change the date format in the query that was sent to SQL server when I apply a filter in Power BI desktop.
>> the date format in the query that was sent to SQL server
What's the mean of "sent to", it refers to the data was get from SQL Server, right?
Hi @v-huizhn-msft let me explain more:
My report connects to SQL server and gets data from a SQL function call "getData".
And I have filters in my report that is pointing to a date time field of the SQL function. When I click the filters in Power BI desktop
When I click the filters in Power BI desktop, I can see a bunch of scripts sent to SQL server using SQL profiler. I guess these scripts were generated by Power BI desktop.
These scripts wrapped around my "getData" function and has cast statement in the where clause to filter data by date and time.
It looks like below code. That cast statement caused the error in SQL server with French OS. As this SQL is not controlled by me, I don't know how to fix the error.
([t8].[DateTime] < CAST( N'2016-06-16 08:00:00' AS datetime)) AND ([t8].[DateTime] >= CAST( N'2016-06-01 08:00:00' AS datetime))
for SQL connections you can choose language in Connections and Users
if its a non english SQL then usually default language is non english like here in a newly created user on a german server
If you cant change language in the connection in your case another possibility is create a different user with default language english