我在表中有一个 datetimeoffset 列,行中有不同的 TZ 偏移量。我想通过 BCL 类型 System.DateTimeOffset 上的ToLocalTime方法全部运行它们(由于夏令时,我不能只使用SWITCHOFFSET函数)。'clr enabled' 已重新配置。
“蛮力”方法似乎是使用静态方法创建一个静态类,例如:
public static class DateTimeUtils
{
[SqlFunction]
public static DateTimeOffset ToLocalTimeZone(DateTimeOffset input)
{
return input.ToLocalTime();
}
}
有没有更简单的方法可以调用 BCL 类型/方法,而不必为此在数据库中创建程序集?
我希望我能够只调用 SQL 类型的方法,但没有这样的运气。尝试这样的事情:
DECLARE @foo datetimeoffset = getdate()
select [datetimeoffset]::ToLocalTime(@foo)
...给
Msg 258, Level 15, State 1, Line 3
Cannot call methods on datetimeoffset.
谢谢!