【问题标题】:ASP.NET GridView throws: The version of SQL Server in use does not support datatype 'date'ASP.NET GridView 抛出:正在使用的 SQL Server 版本不支持数据类型“日期”
【发布时间】:2009-12-20 22:05:37
【问题描述】:

如何处理不支持'date'的服务器?抱歉问了这么模糊的问题。请让我知道我应该添加哪些其他详细信息。谢谢。

这是错误:

“/”应用程序中的服务器错误。

正在使用的 SQL Server 版本不支持数据类型“日期”。 说明:执行当前 Web 请求期间发生未处理的异常。请查看堆栈跟踪以获取有关错误及其源自代码的位置的更多信息。

异常详细信息:System.ArgumentException:正在使用的 SQL Server 版本不支持数据类型“日期”。

来源错误:

在执行当前 Web 请求期间生成了未处理的异常。可以使用下面的异常堆栈跟踪来识别有关异常起源和位置的信息。


对于来自服务器资源管理器的列属性,我已将列指定为 datetime,所以我不确定为什么自动生成的 ASP.NET gridview 尝试使用 date 类型,而不是 datetime 类型。

这是由 ASP.NET 2.0 网格视图自动生成的导致错误的代码:

只将 DbType="Date" 更改为 DbType="Datetime" 可以吗? (它似乎有效。)

【问题讨论】:

  • 您是如何做到这一点的? :-) 几乎似乎 SQL 数据源假定您出于某种原因正在使用 SQL Server 2008....您能解释一下这些步骤吗?你用了什么工具/巫师/黑魔法?
  • 从 Visual Studio 2008 服务器资源管理器中,我将联系人表拖到设计器中的 ASP.NET 2.0 网络表单上。然后,配置自动创建的 sql 数据源,我选择“生成插入、更新和删除语句”。这一切都会生成一个网格视图控件,其中包含网格视图控件最左侧列中的插入、更新和删除链接。

标签: asp.net sql-server-2005


【解决方案1】:

您很可能正在寻找datetime or smalldatetime 类型:

表示日期和时间的日期和时间数据类型

【讨论】:

  • 只将 DbType="Date" 更改为 DbType="Datetime" 可以吗?
【解决方案2】:

您还可以创建一个基于 DateTime 的用户定义类型,该类型始终具有等于 0(也称为午夜)的时间分量。

【讨论】:

  • 我建议不要创建自定义数据类型。很多关于为什么这不是一个好主意的文章。 UDT 也可能在未来停产。
【解决方案3】:

SQL Server pre-2008 不只支持DATE,如 Oracle(和其他一些 RDBMS)。

您可能正在查看DateTimeSmallDateTime

我们大多数人都使用其中之一 - 我们只是将时间部分保留为 00:00:00

【讨论】:

  • 只将 DbType="Date" 更改为 DbType="Datetime" 可以吗?
  • @Raj:SQL Server 2008 确实有一个DATE 类型。早期版本没有。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-01-23
  • 1970-01-01
  • 2017-11-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多