2014-12-04 62 views
6

我有一個MS Access 2010前端/ SQL Server 2012後端數據庫,並在不同表中包含多個日期字段。有時我需要存儲時間,所以我使用了數據類型datetime或smalldatetime。但是某些字段只需要存儲日期,所以我使用了數據類型Date。Sql Server日期類型顯示爲MS Access中的文本字段

我的問題是,在MS Access中,我的ODBC鏈接表將Date數據類型字段顯示爲Text。這會導致一些日期以yyyy-dd-mm格式存儲,而其他格式則以yyyy-mm-dd格式存儲。

這是一個錯誤?我需要使用smalldatetime嗎?

感謝您的任何援助, 吉姆

+0

只是爲了澄清這是顯示格式問題,因爲SQL Server將Date存儲爲[3字節整數](http://msdn.microsoft.com/zh-cn/library/bb630352%28v=sql.110%29.aspx)。日期的格式不存儲。 – 2014-12-04 16:44:33

+0

嗨康拉德,這是一個格式問題,但它超越了這一點。例如,我有一個訪問查詢,該查詢應排除[datefield]> Date()的任何記錄,但由於[datefield]正在作爲文本字符串加載,因此該記錄將被包含。 此外,如果我查看Access中鏈接表的表格設計,它會將該字段顯示爲文本字段,而不是日期字段。 – BiigJiim 2014-12-04 18:00:49

+0

你可能想嘗試'CDate([datefield])> Date()'或者嘗試使用'DateTime'而不是'Date'並使用輸入掩碼。 – 2014-12-04 19:17:02

回答

4

有同樣的問題我自己鏈接訪問2007和SQL Server 2008

this question,如果你看看良友Kallal的評論的第一個答案,它告訴我們問題在於過時的驅動程序將前端連接到後端。

如果您無法選擇最新的驅動程序(並且請記住,即使可以,不同客戶端計算機上的其他數據庫用戶可能無法使用此解決方法)日期時間數據類型。

+0

謝謝 - 這是我懷疑,這是一個驅動程序問題。而不是混淆新的驅動程序(客戶端可能沒有生產機器),我已經改變了所有的日期時間。對於一個不應該存在的問題,似乎有些垃圾解決方案。 P.S.我試圖評價你的答案,但顯然我沒有足夠的反饋! – BiigJiim 2014-12-16 15:29:22

+0

@BiigJiim:你不需要贊成答案,只需標記爲「答案」即可。 – 2015-09-07 14:17:42

0

只是爲了闡述對@BiigJiim給出的評論實際上我已經安裝了本機客戶端11.0驅動程序,但爲我創建DSN的表連接,我不得不改變我的連接字符串正式:Driver={SQL Server Native Client 11.0};

相關問題