【问题标题】:SQl Server 2012 Date format not recognized from Access 2007SQL Server 2012 Access 2007 无法识别日期格式
【发布时间】:2014-02-04 20:04:24
【问题描述】:

我有一个带有 Access 2007 前端的 SQL Server 2012 数据库。我的问题是 Access 无法识别 SQL Server 的日期,因为它们的格式不同。

  • SQL Server-s 格式为YYYY-MM-DD
  • 访问格式为DD-MM-YYYY

当日期显示在文本框中时,它显示为字符串(旁边没有小日历图标)。 无论如何我可以配置我的 Access 前端,以便它识别 SQL Server 的日期?

我使用 Microsoft SQL Server Migration Assistant for Access 将数据迁移到 SQL Server

由于这个数据库正在开发中,我的本地计算机上的 SQL Server 位于 C 驱动器(无虚拟驱动器)

根据我的研究,我找到了这个答案:

用户遇到的问题与驱动程序有关。 Microsoft 有一个必须放在客户端上的新 DLL 工作站(或 Citrix 的服务器)。完成后,MS Access 中的所有日期都将有效 适当地。我对 Access 2010 的最新体验与 Access 2003 完全相同。 它需要一个 DLL。从那里,使用无 DNS 连接字符串进行调查

在哪里可以找到这个 DDL 驱动程序以及如何安装它。

谢谢 马格斯

【问题讨论】:

  • 您在 SQL 中将日期存储为DATETIME 还是VARCHAR?如果是 DATETIME,那么在 SQL 和 ACCESS 中遇到DATETIME 应该没有问题。 SQL Server 不存储格式,它以一种或另一种方式显示日期的唯一原因是基于您的 SQL-Server 设置。
  • 进一步了解@SaUce 的要求,请指明SQL Server 中的实际 列类型。 SQL Server 中的datetime 列应在 Access 中显示为Date/Time 字段。其他 SQL Server 列类型,如 datetime 通常在 Access 中显示为文本值(因为 Access 没有仅是 DateTime 的字段类型)。
  • 另外:(1) 如果您可以提供您在问题中引用的有关 DLL“修复”的文章的链接,请编辑您的问题以包含它。 (2) 更新后的 DLL 是否改变了 Access(或 ODBC)的行为,还是改变了 SQL Server 迁移助手的行为?
  • 您好,我进行了一轮工作。导入数据时,它从访问日期开始,在迁移到 SQL Server 时以 dataTime2 结束。然后我将内容复制到另一列,该列具有国际日期格式的数据类型日期。在访问中,它以国际格式显示为 dateTime。如果我不必将数据复制到另一列会更容易。谢谢:-)
  • 您好,我将尝试找到该答案并将其链接。感谢您的建议和帮助 maggs

标签: sql-server datepicker ms-access-2007 date-format data-migration


【解决方案1】:

我发现 SSMA 出于某种原因将所有日期时间转换为 datetime2。我进入 SQL Server Management Studio 并将它们更改为日期时间,它解决了这个问题。您还可以检查 SSMA 中的字段映射并在迁移之前对其进行调整。

(我有完全相同的环境 - SQL Server 2012 和 Access 2007,使用 SSMA。)

【讨论】:

  • 这并没有提供问题的答案。要批评或要求作者澄清,请在他们的帖子下方发表评论 - 您可以随时评论自己的帖子,一旦您有足够的reputation,您就可以comment on any post
  • 我认为它确实回答了如何解决 Access 2007 在使用 SSMA 迁移到 SQL Server 2012 后无法识别日期的问题。这不是基本问题吗?
  • 您的回复有帮助,是基本问题。谢谢
【解决方案2】:

我在本地 PC (Vista) 上使用 SQL Server 2012,并且有一个 Access 2010 前端,其中包含约 75 个链接表。 SQL Server 中的表有一个名为“EnteredDate”的列,该列定义为“日期时间”。 在 Access 中,“EnteredDate”列定义为“日期/时间”。 在 Access 中,我刚刚运行了以下查询并得到了正确的结果:

SELECT DataError.Description, DataError.EnteredDate

FROM 数据错误 WHERE (((DataError.EnteredDate) 介于 #1/1/2010# 和 #1/31/2010#));

【讨论】:

  • 嗨,韦恩,感谢您的回复。我可以运行查询,但是当我进入表单时,我遇到了日期选择器未显示的问题,并且日期显示为国际格式 dateTime 感谢 maggs
  • 好的,因为我可以在表单上看到日期选择器(使用连续格式或数据表格式),所以我们有所不同。是的,在 SQL Server 中,我的日期看起来像:2010-02-24;在 Access 中显示为 2/24/2010,请检查 Access 列并确保它是“日期/时间”。我必须问一下,Access 是直接链接到表格,还是通过 VIEW?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-02-13
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多