Join us at FabCon Atlanta from March 16 - 20, 2026, for the ultimate Fabric, Power BI, AI and SQL community-led event. Save $200 with code FABCOMM.
Register now!Get Fabric Certified for FREE during Fabric Data Days. Don't miss your chance! Request now
I have a simple sql table with a datetime field which I want in local time. Converting it by changing type to datetimezone and then use ToLocal work fine.
But when I also use a custom function to add an extra column the time is no longer changed to local time.
What am I doing wrong?
let
Source = Sql.Databases("localhost"),
PowerBI = Source{[Name="PowerBI"]}[Data],
dbo_Table_1 = PowerBI{[Schema="dbo",Item="Table_1"]}[Data],
#"Changed Type" = Table.TransformColumnTypes(dbo_Table_1,{{"Created", type datetimezone}}),
#"Calculated Local Time" = Table.TransformColumns(#"Changed Type",{{"Created", DateTimeZone.ToLocal, type datetimezone}}),
#"Invoked Custom Function" = Table.AddColumn(#"Calculated Local Time", "Type2", each add2([Type]))
in
#"Invoked Custom Function"Wiithout the #"Invoked Custom Function" = Table.AddColumn(#"Calculated Local Time", "Type2", each add2([Type])) line I get "Created" in local time, with the line inserted "Created" is utc.
The custom function is just a dummy function for testing that add 2 to inputvalue
let
Source = (val as number) => val + 2
in
Source
More info..
using the sql profiler I can see that the sql statements generated by power bi differs.
Without the custom function inserted the sql statement is
select [_].[EntryNo] as [EntryNo],
[_].[Created] as [Created],
[_].[Type] as [Type],
convert(datetimeoffset, [_].[Created]) as [t0_0]
from [dbo].[Table_1] as [_]
With custom function
select [$Table].[EntryNo] as [EntryNo],
[$Table].[Created] as [Created],
[$Table].[Type] as [Type]
from [dbo].[Table_1] as [$Table]so somehow powerbi desides that the datetimeoffset info isn't needed when a custom function is used. Why?
Hi @thomasronn,
The cause could be the custom function. You add date with number, which couldn't work. I tried this function. It worked. You can try it out.
let
Source = (val as datetimezone) => Date.AddDays(val, 2)
in
SourceBest Regards,
Dale
Thanks, but my custom function is not using the datetime. I use a custom function on a number column.
The strange thing is that when I have
Table.TransformColumnTypes(dbo_Table_1,{{"Created", type datetimezone}})the sql statement is changed into a statement with
convert(datetimeoffset, [_].[Created]) as [t0_0]
which make sense.
But if I also have a custom function the Convert(datetimeoffset..) is gone. Which is wrong.
I actually managed to get the convert(datetimeoffset...) in again by also transform another column from whole number to decimal number. So to me it looks like a bug in the optimizing of the sql statement.
Check out the November 2025 Power BI update to learn about new features.
Advance your Data & AI career with 50 days of live learning, contests, hands-on challenges, study groups & certifications and more!
| User | Count |
|---|---|
| 103 | |
| 80 | |
| 59 | |
| 51 | |
| 46 |