C# 在不上载完整的SQLCLR程序集的情况下,如何从T-SQL调用BCL类型的实例方法?
我在表中有一个datetimeoffset列,行中有不同的TZ偏移量。我想在BCL类型的System.DateTimeOffset(由于夏令时的原因,我不能只使用这个函数)上运行它们。“已启用clr”已重新配置 “暴力”方法似乎是使用静态方法创建静态类,类似于: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
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中,这似乎是一种耻辱。啊,嗯。谢谢