C# SQL CLR和可为空的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 {

我正在尝试编写一个SQLCLR函数,它接受一个DateTime2作为输入并返回另一个DateTime2。基于此,我将参数更改为C#类型的DateTime,以提供所需的精度级别。但是,由于输入可以为空,我希望它是DateTime?;返回类型也是如此

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”部署。