代码之家  ›  专栏  ›  技术社区  ›  Mathieu Pagé

MS Access将SQL server的datetime2字段视为文本

  •  5
  • Mathieu Pagé  · 技术社区  · 15 年前

    我正在将应用程序从MS Access FE和BE升迁到MS Access FE和SQL Server BE。我使用SSMA Access“升迁”工具将所有表从Access转换为SQL,然后使用ODBC将Access FE中的SQL表链接起来。

    在我的access数据库中,有些表的DateTime列在SQL Server中转换为DateTime(0)列。在我链接了Access中的这些表之后,Access将这些列视为文本列,即使它们是SQL server BE中的datetime2(0)列。

    这会导致一些问题,因为使用日期格式的查询不使用文本格式。是否仍要链接表以便通过访问将datetime(0)字段视为datetime值?

    5 回复  |  直到 15 年前
        1
  •  7
  •   Fionnuala    15 年前

    根据 TechNet ,对新数据类型datetime2的支持有限。如果可以的话,我会和约会时间一起去。

        2
  •  5
  •   Bryan H    10 年前

    类似问题:已解决

    我有一个SQL服务器,它的字段是DATETIME2数据类型,并且在Win7上通过ODBC作为MS Access中的链接表连接到它。

    当使用同一数据库从两个不同的工作站连接时,一个工作站的数据类型为“日期/时间”,另一个工作站的数据类型为“短文本”

    解决方案:原来链接表是使用两个不同的DSN文件建立的,一个列出了“DRIVER=SQL Server”,另一个列出了“DRIVER=sqlserver Native Client 11.0”。 为了通过ODBC链接拥有“日期/时间”数据类型,我需要使用Client 11.0。

    要查看已安装的驱动程序:

    From the start menu search for "ODBC"
    Select "Data Sources (ODBC)".  
    Click on the "Drivers" tab 
    

    您将看到已安装的驱动程序。我有三个。

    SQL Server                     6.01.7601.17514
    SQL Server Native Client 10.0  2007.100.5500.00
    SQL Server Native Client 11.0  2011.110.6020.00
    

    我相信SQL Server版本6是由Win7安装并通过Windows Update更新的。如果这是您所拥有的全部,则只能通过链接表从DATETIME2 SQL数据类型中获取文本。

    本机客户端分别由SQL Server Management Studio 2008和2012安装。

    您可以从下载并安装SQL Server Native Client 11.0 https://www.microsoft.com/en-us/download/details.aspx?id=36434

        3
  •  1
  •   David-W-Fenton    15 年前

    Access的SSMA会将任何日期/时间字段(其值在SQL Server中无效)转换为文本。您应该运行SSMA来尝试转换,它会告诉您问题所在,然后您可以在实际转换之前清除数据。

    您必须跳过SSMA向导,因为它在不预览结果的情况下进行升迁。

        4
  •  1
  •   Cell Tech    13 年前

    我遇到了同样的问题,这也是我进入这一页的原因,但我找到了解决办法: 问题:从access到sql server的链接表将datetime2列显示为文本,这有许多含义,如日期比较、排序等,。

    解决方案:将sql server中的datetime2转换为date time,access将立即将该列显示为date字段

    请注意,由于表已经有数据,您不能只更改数据类型,我计划添加新列datetime type,复制数据over,删除orig列,重命名

    如何检查准确性:我在sql server中创建了一个包含3列的表,datetime,datetime2,date然后从access链接到它,只有datetime在access中显示为日期字段,其他2列显示为文本

        5
  •  -1
  •   iDevlop    15 年前

    通常需要在升迁向导之前验证日期。用户倾向于输入“愚蠢”的日期,这些日期被访问日期字段接受,但会在SQL Server中导致错误。尝试在表中查询超出合理范围的日期,如“1/1/1930到1/1/2020”,并在重新启动升迁向导之前更正这些日期。
    我还发现了一种我没用过但看起来不错的产品: http://www.upsizing.co.uk/features_translate.aspx

    推荐文章