问题标签 [datetime2]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
830 浏览

c# - DataColumn - 如何区分日期时间或日期时间2

我无法识别日期时间数据列的类型。

如果我从 SQL 2008 中获取 DataTable,则 datetime DataColumn 可能是 datetime 或 datetime2,但在 C# 中似乎没有区别。

我需要在加载到 SQL 之前验证数据...

有任何想法吗?

0 投票
1 回答
2324 浏览

vb.net - 带有 DateTime2 的 SQL Server 2008 存储过程

DateTime2我对SQL Server 2008 中的存储过程和数据类型有一个小问题。

我有几个使用该DateTime2数据类型的存储过程,我想插入日期0001.01.01 00:00:00,但这不适用于 VB.net,我找不到原因。

我使用这个代码片段:

从我的程序中调用存储过程(存储过程是一个简单的INSERT语句,仅适用于实际日期)。但是当我输入日期时0001.01.01 00:00:00,它总是会出现错误,当我想执行存储过程时,我无法在“01.01.1753”之前插入日期。

现在我已经知道DateTime2SQL Server 中的数据类型应该支持这一点。

所以我的问题是这可能是一个驱动程序问题,更新 SQLClient 可以解决这个问题,或者这是一个普遍的问题,我终于可以停止搜索,只使用 1753.01.01。

谢谢林

0 投票
1 回答
1573 浏览

.net - EF:更改 ProviderManifestToken 或更改数据类型?

两个问题,然后是细节:

  1. 当我将 ProviderManifestToken 更改为“2005”时,还会出现哪些其他副作用?
  2. datetime将数据库中的架构从to更改是不明智的datetime2吗?例如,如果我将 ProviderManifestToken 保留为“2008”,然后有人尝试从 EDMX 模型生成数据库模式,datetime2它会在创建这些列时使用数据类型吗?

细节:

VS2010 SP1
.NET 4
EF 4
SQL Server 2008

我没有动手实体框架的经验,我突然维护了一个使用它的代码库。代码库很脆弱,时间紧迫,留下来的人还不太了解。

解决方案资源管理器显示了一个 EDMX 文件,该文件映射到我们 DEV 数据库中的现有模式。我不知道哪个(模型或数据库)先出现。

提交操作失败并出现以下错误:

将 datetime2 数据类型转换为 datetime 数据类型导致值超出范围。

当我查看 SQL Server 2008 实例中日期/时间列的数据类型时,它们datetime都是datetime2.

当我查看 EDMX 文件的 XML 时,我看到了这个 Schema 元素属性:

ProviderManifestToken="2008"

我猜在某个地方,我的 .NET 代码中有一个 DateTime 值,它的值超出了 SQL Server 2008 的datetime数据类型范围。我从阅读中了解到,将 EDMX 的 ProviderManifestToken 更改为“2005”会阻止 EFdatetime2在这些提交期间尝试使用该类型。

这是我的问题:我不知道如果我从 2008 年到 2005 年将此代码库或 EF 在其中的位置更改,我不知道该代码库的其他内容会发生什么变化,并且我倾向于在技术不是绝对需要的情况下向后移动。

0 投票
2 回答
3796 浏览

sql-server-2008 - DateTime2 之后的数字是否用于纳秒目的?

我已经阅读了文档但我不完全理解默认精度是 datetime2(7) 是 7 代表纳秒的精度?

0 投票
2 回答
1031 浏览

sql-server-2008 - 有理由不使用 DateTime2 吗?

我错过了不使用新的 DateTime2 数据类型的理由吗?

例如,在迁移到另一个数据库系统或将其与另一种技术集成时是否会导致问题?

0 投票
0 回答
312 浏览

datetime2 - 选择/更新语句中的日期时间(2)?

我正在尝试通过根据日期条件从一个表中选择记录并在相关表中填充另一个日期字段来清理一些遗留数据。这两个日期可能不一样,这取决于用户(Field Crew Boss)。我们有成千上万的记录受到此清理的影响。我对以下代码感到困惑,因为我们(出于某种原因)对所有日期字段使用 datetime(2),并且 yyyymmdd 之后的“填充”包含时间,包括毫秒,我似乎看不到在查询中捕获。

0 投票
2 回答
4111 浏览

java - SQL Server 的 timestamp2 应该如何在 JDBC 中工作?

我在尝试在 SQL Server 2008 中使用 timestamp2 而不是 Timestamp 时遇到了一些麻烦。显然,rs.getTimestamp 在 timestamp 和 timestamp2 之间的行为非常不同。但是,我找不到任何文件说明应该有区别,或者我应该使用不同的东西。我想知道我是否只是做错了什么。

环境:

  • 在 SQL Express 2008 (10.0) 和 SQL Server 2008 R2 (10.5) 上都试过了。
  • sqljdbc4.jar 版本 3.0,大小为 537,303 字节,CRC-32=a0aa1e25,MD5=402130141d5f2cee727f4371e2e8fd8a。
  • Java 1.6

这是一个演示问题的单元测试。唯一的“魔法”是“Db.getConnection()”,您可以用适当的代码替换它。datetime 和 datetime2 的测试相同,但 datetime2 测试失败,日期早于 2 天。我将数据库中的所有时间都视为 GMT/UTC,并且我没有尝试将时区信息添加到 datetime2 数据的数据库数据中。

我唯一的选择是切换回时间戳吗?

编辑:对于未来的 Google 员工,使用 sqljdbc4.jar 3.0 版,测试在 Linux 上失败,但在 Windows 上通过。我还没有尝试过 SQL Server 2012 附带的 sqljdbc4.jar 4.0 版。

0 投票
2 回答
1361 浏览

.net - 对于 .NET DateTime 类型,为什么推断的数据库类型是 SqlDbTypes.DateTime 而不是 SqlDbTypes.DateTime2?

对于 .NET DateTime 类型,为什么推断的数据库类型是 SqlDbTypes.DateTime 而不是 SqlDbTypes.DateTime2?(见http://msdn.microsoft.com/en-us/library/yy6y35y8.aspx

背景

通过默认使用不太精确的 SQL DateTime 类型,.NET 框架保证,默认情况下,您通过具有未指定 SqlDbType 的 SqlParameter 对象传递的任何 .NET DateTime 值肯定会因精度降低而损坏。这是一个糟糕的设计决定,IMO,考虑到简单地保留全部价值不会产生更糟糕的后果。

例如,我不能使用 SqlParameterCollection.AddWithValue 方法,因为在传递 DateTime 值时,该值会被截断为范围非常有限的 SQL DateTime 值。结果是:

  • .NET DateTime 值超出 SQL DateTime 值的允许范围,并且发生错误,或者
  • 截断的值不会匹配数据库中更精确的值,也不会正确匹配更新操作的记录,更糟糕的是,IMO,因为它很微妙并且不会产生错误。

问题

由于 .NET DateTime 在精度和范围上都与 SQL Server 2008 数据类型“datetime2(7)”最接近,为什么框架将 SqlParameter 值转换为 SQL DateTime,有没有办法改变默认行为所以我仍然可以使用类型推断功能吗?

我能看到的唯一建议是该功能已损坏,我应该始终明确指定数据类型,这将需要大量代码更改。我想如果框架简单地保留 .NET DateTime 值的原始值,问题会更少。如果数据库字段类型恰好是不太精确的 SQL DateTime 类型,那么传递给查询的日期/时间字符串值将被数据库引擎简单地截断。如果超出范围,您将得到一个错误,正如预期的那样。更重要的是,如果数据库字段类型是 datetime2,那么一切都会顺利进行,记录也会正确匹配。

0 投票
3 回答
7120 浏览

sql-server-2005 - SQL Server 2005 是否支持 datetime2

如果 SQL Server 2005 支持 datetime2 数据类型,我似乎无法在官方文档中找到?

0 投票
2 回答
4142 浏览

.net - 如何解决 EF 4.1、CodeFirst C# DateTime datetime2 与 datetime 不兼容问题

我的 Code First 模型具有System.DateTime属性。当调用数据库种子代码时,它会抛出此异常:

SqlException (0x80131904):将 datetime2 数据类型转换为 datetime 数据类型导致值超出范围。

我正在DateTime使用构造函数创建一个新对象。Code First 正在创建数据库模式。如何克服 Code First 中的这个明显错误?我对我的数据类型并不特别。我只需要存储一个日期,以及可选的一天中的某个时间,但并不重要。

我已经搜索并阅读了很多帖子,但没有一个带有此错误的帖子指定它们来自 CodeFirst 生成的数据方案。我找到的最接近的答案涉及ProviderManifestTokenedmx文件中的进行更改,但我的项目没有edmx文件。我没有使用设计器,我使用的是 Code First。