簡體   English   中英

MS-Access將SQL Server的datetime2字段視為TEXT

[英]MS-Access sees SQL server's datetime2 fields as TEXT

我正在將我的應用程序從MS-Access FE和BE升級到MS-Access FE和SQL Server BE。 我使用SSMA Access“升遷”工具將所有表從Access轉換為SQL,然后使用ODBC鏈接Access FE中的SQL表。

在我的訪問數據庫中,某些表具有在SQL Server的datetime(0)列中轉換的DateTime列。 在Access中鏈接這些表后,Access將這些列視為文本列,即使它們是SQL Server BE中的datetime2(0)列。

這會導致一些問題,因為使用日期格式的查詢不能使用文本格式。 是否有鏈接表,以便日期時間(0)字段被Access視為日期時間值?

根據TechNet的說法,對新數據類型datetime2的支持有限。 如果可以的話,我會選擇日期時間。

類似的問題:已解決

我有一個SQL服務器,其字段為DATETIME2數據類型,並通過ODBC連接到它作為Win7上的MS Access中的鏈接表。

當使用相同的數據庫從兩個不同的工作站連接時,一個具有正確的數據類型“日期/時間”,另一個具有“短文本”的數據類型

解決方案:事實證明鏈接表是使用兩個不同的DSN文件建立的,一個列出了“DRIVER = SQL Server”,另一個列出了“DRIVER = SQL Server 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數據類型中獲取TEXT。

本機客戶端分別由SQL Server Management Studio 2008和2012安裝。

您可以從https://www.microsoft.com/en-us/download/details.aspx?id=36434下載並安裝SQL Server Native Client 11.0。

我遇到了同樣的問題,這是導致我進入這個頁面的問題,但我找到了解決方案:問題:從訪問sql server鏈接表將datetime2列顯示為文本,這有很多含義,如日期比較,排序等。

解決方案:將sql server中的datetime2轉換為日期時間,訪問權限會立即將列顯示為日期字段

請注意,由於表已有數據,您不能只更改數據類型,我計划添加新列datetime類型,復制數據,刪除orig列,重命名

如何檢查准確性:我在sql server,datetime,datetime2,date中創建了一個包含3列的表,然后我從access鏈接到它,只有datetime在訪問時顯示為日期字段,其他2顯示為文本

SSMA for Access會將任何日期/時間字段與SQL Server中無效的值轉換為文本。 您應該運行SSMA來嘗試轉換,它會告訴您問題,然后您可以在實際轉換之前清理數據。

您必須跳過SSMA向導,因為它會在不預覽結果的情況下進行升遷。

通常需要在升遷向導之前驗證您的日期。 用戶傾向於輸入Access日期字段接受的“愚蠢”日期,但會導致SQL Server出錯。 嘗試使用“BETWEEN 1/1/1930和1/1/2020”等合理范圍之外的日期查詢表格,並在重新啟動升遷向導之前更正這些日期。
我還發現了一個我沒用過但看起來不錯的產品: http//www.upsizing.co.uk/features_translate.aspx

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM