2009-06-17 58 views
4

我有给我一个访问数据库,其中所有的日期被存储在文本 字段在格式mm/dd时(例如:3/13/2009 12:20:36 AM)MS-访问错误的日期格式从文本转换字段到日期/时间

我想将字段转换为日期/时间,但访问格式为dd/mm,其中 使其成为日期如果日期大于12日或未转换日期可能 是错的。

实施例与当前的格式时作为文本在DB存储:

 
3/12/2009 11:32:40 PM 
3/13/2009 11:32:40 PM 

如果我简单地从表的设计视图 从文本到日期/时间日期类型转换该字段的数据类型我得到如下:

 
03/12/2009 11:32:40 PM 
13/03/2009 11:32:40 PM 

我怎么会去固定的存储值? 我不那么在意格式中的日期将被显示为我能 轻易改变它的外观,但让他们从文本正确地转换到 日期/时间已被证明是非常棘手。

优选我想从直接访问修复它,但如果需要,我可以从C#这样做。

谢谢。

+0

返回日期怎么是你想现在把它转换? – kscott 2009-06-17 16:33:14

回答

2

如果这是本地Access应用程序,它使用您系统的日期时间格式,因此在Windows中更改您的本地化设置以使用MM/DD将使Access以这种方式进行转换,除非在应用程序中某处已被覆盖。

+0

这么简单...但它的工作原理!谢谢kscott。 – 2009-06-17 16:53:21

+1

希望这是OP正在做的一次性操作。其他方面,你只是保证某些用户将要改变他/她的日期设置,并打破应用程序。 – BIBD 2009-06-17 18:20:21

+0

此问题的通常方法是:使用非明确的日期格式,如日 - 月 - 年(例如,17君2009)或使用DateSerial。请记住,Jet SQL以美国形式解释非指定日期,即mm/dd/yyyy。当然,如果您的本地日期设置是dd/mm/yyyy,这当然是灾难性的。 – 2009-06-18 03:50:03

0

在Access中导入功能都有不俗的日期解析功能,并会让你指定好几个不同的格式。不知道如何最好地将其应用于Access中已有的内容 - 快速的方法可能是将数据复制到Excel中,然后重新导入它。

2

格式(CDATE( “2009年3月13日下午11时32分40秒”), “MM/DD/YYYY” 会给你03/13/2009

2

你就得到了很好的答案你因此您应该了解以下几点:

SQL语句要求日期要么完全明确,要么以mm/dd/yy为单位,要么以mm/dd/yyyy格式,否则访问/喷气会做的最好诠释与依赖于它正在与具体日期未知结果的日期。你不能假设你正在上使用这些日期格式的系统。因此,你应该使用在以下网页的逻辑。

在美国#MM/DD/YYYY#格式 http://www.mvps.org/access/datetime/date0005.htm