2014-12-04 58 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};

相关问题