问题标签 [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 投票
1 回答
301 浏览

c# - EF6 代码优先:修复 DateTime2

我有一个代码优先的 EF6 数据库,其中包含许多 DateTime 字段。创建表时,这些已映射到 localdb 数据库中的日期时间字段。

我最近对其中一些字段中存储的值进行了一些时区调整,现在我遇到了“datetime2 到 datetime 的转换”的情况。

我想做的是调整代码中的表定义,执行添加迁移/更新数据库步骤,然后继续我的工作。

但是我在网上看到的所有关于这种情况的答案都要求创建一个约定并在数据上下文的 OnModelCreating() 方法中使用流利的 api。

不幸的是,我没有使用 fluent api 的经验。我什至不清楚 OnModelCreating 是否在添加迁移/更新数据库过程中运行。

可以通过使用某些属性装饰 DateTime 属性来完成这种迁移吗?

0 投票
2 回答
2011 浏览

c++ - 如何使用新的 SQL Server Native Client 将 datetime 迁移到 datetime2

我们目前正在将我们的数据库从SQL Server Native Client v11 (SQL Server 2012)迁移datetime到包括在内。datetime2数据库更新很容易完成,但问题出现在我们想要使用的新 SQL Server Native Client 11 上。

一般来说,我们的 CRUD 操作有带有“COLUMN_ENTRY*”访问器的 OLE DB 消费者。对于datetime2列,成员的类型为DBTIMESTAMP。使用SQLNCLI提供者,小数部分DBTIMESTAMP被默默地截断为支持的值。使用SQLNCLI11带有太精确分数的插入会导致此错误:

DB_E_ERRORSOCCURRED Multiple-step OLE DB operation generated errors. Check each OLE DB status value, if available. No work was done.

根据此链接,如果将太多数据插入到字段中,则会返回此错误。由此我假设 DBDATETIME 成员的小数部分太精确而无法插入。根据此链接,新的 Native Client 版本(10 和 11)不会截断,但会因错误而失败。以我们想要实现的这个简化示例为例:

在代码的某些部分,我将时间戳初始化为 2015-08-10 07:47:49.986149999 并且插入失败。如果我将分数重置为 0,则插入有效;0 以外的任何值都失败。我尝试使用COLUMN_ENTRY_PS各种值提供日期时间精度和比例,但插入总是失败。

我们如何强制 Native Client 简单地接受该值并截断它?很明显,我们不能手动将所有值截断为支持的 DB 精度。我找不到任何关于如何在新的 Native Client 中使用 datetime2 的适当文档。我们是否缺少正确处理 datetime2 的任何转换或设置?

这是测试设置:

  • 视窗 7 64 位
  • SQL Server 本机客户端 11 (SQLNCLI11)
  • SQL Server 2012
  • DBPROP_INIT_LCID=2055
  • DBPROP_INIT_PROMPT=4
  • DBPROP_INIT_DATASOURCE=本地主机
  • DBPROP_AUTH_INTEGRATED=SSPI

对于SQLNCLI提供者,相同的代码可以工作。

[EDIT#1]:我使用转储了更多错误信息AtlTraceErrorRecords,这证实了与链接的 Microsoft Connect 报告中相同的错误:

Row #: 0 Source: "Microsoft SQL Server Native Client 11.0" Description: "The fractional part of the provided time value overflows the scale of the corresponding SQL Server parameter or column. Increase bScale in DBPARAMBINDINFO or column scale to correct this error." Help File: "(null)" Help Context: 0 GUID: {0C733A63-2A1C-11CE-ADE5-00AA0044773D}

[EDIT#2]:根据我的进一步研究,这似乎是新 Native Client 的定义和接受的行为。请参阅更严格的 SQL_C_TYPE _TIMESTAMP 和 DBTYPE_DBTIMESTAMP 参数验证以供参考。但是如果没有任何文档说明如何正确使用 datetime2,微软就无法认真对待这一变化。他们真的需要开发人员自己在将 DBTIMESTAMP 插入数据库之前对其进行四舍五入吗?在某些情况下,由于某些浮点精度错误,舍入甚至不起作用。以上面的示例时间戳为例,您将看到典型的 .9999 精度错误。有人应该如何让这种奇怪的行为起作用?使用此错误消息,您甚至无法在不使用 SQL 函数的情况下将当前时间戳保存到数据库now()因为您通常会在这些溢出中运行。

0 投票
3 回答
1846 浏览

sql-server - 首先使用实体​​框架数据库强制日期时间

我首先使用 EF 数据库连接到数据库。因此我的模型是自动生成的。

当我更新记录时,我的 DateTimes 被写为 SQL 类型 DateTime2。生产服务器是 SQL Server 2005(请不要评论),因此更新失败,因为不支持 DateTime2。

我已经尝试按照http://www.asp.net/mvc/overview/getting-started/database-first-development/enhancing-data-validation为我的模型创建一个元数据类,并用 [Column( DbType = "datetime")],但要么我没有正确遵循说明,要么我走错了路。

写入数据库时​​如何让 EF 数据库首先使用 DateTime?

谢谢

0 投票
1 回答
5230 浏览

sql-server - SQL SERVER 错误:“将 datetime2 数据类型转换为 datetime 数据类型导致值超出范围。” (informix 到 sql 服务器)

我有一个 sql server 链接服务器来访问一个 informix 数据库,我使用 openquery 来运行查询,然后将结果插入到一个 sql server 表中。

问题是当我运行如下代码时:

我收到了这个错误:

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

我已经尝试过投射,但没有奏效。

我在这里和谷歌搜索了一些答案,但没有找到。

那么,有人可以帮助我吗?

0 投票
1 回答
2529 浏览

database - 如何使用 SQLBindParameter 绑定 datetime2(SQL_C_TYPE_TIMESTAMP)?

我正在尝试使用 SQLBindParameter 为SQL_TYPE_TIMESTAMP数据类型绑定 datetime2 参数,如下所示

SQLBindParameter(hStmt, 7, SQL_PARAM_INPUT, SQL_C_TYPE_TIMESTAMP, SQL_TYPE_TIMESTAMP, 0, 0, &datetime2, 0, NULL);

也试过这个:

rc = SQLBindParameter(hStmt, 8, SQL_PARAM_INPUT, SQL_C_TYPE_TIMESTAMP, SQL_TYPE_TIMESTAMP, SQL_TIMESTAMP_LEN + 1, 7, &rec.datetime2, 0, NULL);

rc 为 0

当我执行查询(插入)时, SQLExecDirect(hStmt, const_cast<wchar_t*>(query.c_str()), SQL_NTS); 我收到 22008 sqlstate 错误,指示日期时间字段溢出;

我已经查找了有关此数据类型的任何示例代码,但找不到任何可行的示例,是否有忍者对此类型有解决方案?精度为 7 的 SQL_TYPE_TIME 很好。

0 投票
1 回答
515 浏览

sql-server - SQL Server 中 SYSDATETIME 数据类型的准确性

我已经在 SQL Server 2008 的存储过程中使用 SYSDATETIME 进行了一些测试。我设置了一个带有 IDENTITY 字段的 datetime2(7) 表。

我了解此数据类型的精度和准确性之间的区别,但是,在插入此示例中的多条记录时,我注意到了一个不寻常的结果:

我使用插入语句 100,000 进行循环以确定 SYSDATETIME 是否按预期正常工作。但是,与 GETDATE 相比,它似乎并不准确。

根据我的观察,最后四位小数似乎独立于前三位而递增。这是执行 100,000 次插入的趋势。

如果您注意到这个小样本摘录中的最后两位小数秒,它会从 0.4212457 跳到 0.4212458。

虽然它具有 7 个位置的精度,但在我看来,精度只有 3 个位置。最后四位数字以独立于时间的增量方式运行。我希望时间值的最后 4 位小数在每次插入数据库时​​都是完全随机的。

这是一个正确的陈述,还是有正确的方法来获得真正准确/随机的时间?

0 投票
1 回答
1706 浏览

c# - 将 datetime2 插入数据库

我将datetime2其用作checkInand的数据类型checkOut。以前我可以使用此代码添加到数据库中。

但是现在它不起作用,我收到了这个错误;

“从字符串转换日期和/或时间时转换失败”。

我认为错误是由包含“PM”和“AM”的签入值引起的,但这很奇怪,因为以前我可以将它添加到数据库中。

有人知道如何解决这个问题吗?

0 投票
1 回答
219 浏览

c# - 如何在 wcf uri 模板中传递 datetime2(0)?

我想传递一些值还包括日期时间。我正在尝试这种方式,但我收到此错误“将数据类型 nvarchar 转换为 datetime2 时出错”。

这是我的功能;

这是界面;

我该如何解决这个问题。

0 投票
0 回答
1083 浏览

django - Django:“unicode”对象没有属性“tzinfo”。仅生产服务器

我难住了。使用我的本地设置(python manage.py runserver)一切运行良好。通过我的生产设置(wsgiserver.CherryPyWSGIServer),'unicode' object has no attribute 'tzinfo'当我的程序尝试将数据库中的 datetime2(7) 转换为 pytz 模块中的本地时间时,我得到了。使用 Django 1.9。

  • 两种设置都使用 django-pyodbc-azure 连接到同一个 mssql 数据库。事实上,为了解决这个问题,两者都使用相同的设置文件。

    /li>
  • 通过运行此文件运行生产:

    /li>
  • 本地使用 Django 的 runserver 命令运行

  • wsgi.py:

    /li>

我最初在本地遇到了同样的问题,但是使用显示的选项配置数据库解决了这个问题。

任何帮助都是极好的。

0 投票
3 回答
5271 浏览

sql-server - 使用 Carbon 转换日期的问题

请有人告诉我如何使用 Carbon 将此日期转换为该格式。

我得到:Carbon.php 第 425 行中的 InvalidArgumentException:发现意外数据。发现意外数据。找不到分隔符号 发现意外数据。格式分隔符与尾随数据不匹配