C# 在不上载完整的SQLCLR程序集的情况下,如何从T-SQL调用BCL类型的实例方法?

C# 在不上载完整的SQLCLR程序集的情况下,如何从T-SQL调用BCL类型的实例方法?,c#,tsql,datetime,sqlclr,datetimeoffset,C#,Tsql,Datetime,Sqlclr,Datetimeoffset,我在表中有一个datetimeoffset列,行中有不同的TZ偏移量。我想在BCL类型的System.DateTimeOffset(由于夏令时的原因,我不能只使用这个函数)上运行它们。“已启用clr”已重新配置 “暴力”方法似乎是使用静态方法创建静态类,类似于: public static class DateTimeUtils { [SqlFunction] public static DateTimeOffset ToLocalTimeZone(DateTimeOffset

我在表中有一个datetimeoffset列,行中有不同的TZ偏移量。我想在BCL类型的System.DateTimeOffset(由于夏令时的原因,我不能只使用这个函数)上运行它们。“已启用clr”已重新配置

“暴力”方法似乎是使用静态方法创建静态类,类似于:

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.

谢谢

没有。我是在做了很多研究后得出这个结论的。这是我对同样问题的解决方案:

不,没有。我是在做了很多研究后得出这个结论的。下面是我对同一问题的解决方案:

创建一个程序集来调用BCL方法似乎是一件非常遗憾的事情,显然该方法已经存在于正在运行的SQLCLR中。啊,嗯。谢谢创建一个程序集只是为了调用BCL方法,而该方法显然已经位于运行的SQLCLR中,这似乎是一种耻辱。啊,嗯。谢谢