C# SQL CLR和可为空的datetime参数
我正在尝试编写一个SQLCLR函数,它接受一个DateTime2作为输入并返回另一个DateTime2。基于此,我将参数更改为C#类型的DateTime,以提供所需的精度级别。但是,由于输入可以为空,我希望它是DateTime?;返回类型也是如此C# SQL CLR和可为空的datetime参数,c#,.net,tsql,sql-server-2008,sqlclr,C#,.net,Tsql,Sql Server 2008,Sqlclr,我正在尝试编写一个SQLCLR函数,它接受一个DateTime2作为输入并返回另一个DateTime2。基于此,我将参数更改为C#类型的DateTime,以提供所需的精度级别。但是,由于输入可以为空,我希望它是DateTime?;返回类型也是如此 using System; using Microsoft.SqlServer.Server; namespace SqlServer.Functions { public class UserDefinedFunctions {
using System;
using Microsoft.SqlServer.Server;
namespace SqlServer.Functions {
public class UserDefinedFunctions {
[SqlFunction(DataAccess = DataAccessKind.None)]
public static DateTime? GetLocalTimeFromGMT(DateTime? dateTime) {
if (dateTime.HasValue)
return DateTime.SpecifyKind(dateTime.Value, DateTimeKind.Utc).ToLocalTime();
else
return (DateTime?)null;
}
}
}
问题是在尝试部署时出现以下错误:
错误1找不到类型“Nullable`1”,因为它不存在或您没有权限。SqlServer.Functions
我正在使用Sql Server 2008和Visual Studio 2008。不幸的是,Visual Studio 2008不支持使用Sql Server 2008中添加的许多新功能部署SQLCLR函数,包括可空类型。您可以看到关于这个问题的Bob Beauchemin文件,它已经为Visual Studio 2010修复
Connect项中列出了一个变通方法,它向Visual Studio表明它可以在SQLCLR中使用System.Core和System.Xml.Linq程序集,这应该对您有用。否则,您可以手动将该函数部署到数据库 不幸的是,缺少的程序集不包含表示DateTime2的新类型。我真的很希望找到一个SqlDateTime2类。而且没有。。。Visual Studio 2010 Ultimate仍然无法部署可为null类型的函数。若我去掉了“?”,它可以部署,但不会作为“DateTime”部署。