【问题标题】:MS-access wrong date format when converting field from text to date/time将字段从文本转换为日期/时间时,MS 访问错误的日期格式
【发布时间】:2010-11-03 17:30:22
【问题描述】:

我有一个访问数据库,其中所有日期都存储在文本中 格式为 mm/dd 的字段(例如:3/13/2009 12:20:36 AM)

我想将该字段转换为日期/时间,但访问格式为 dd/mm 使得如果一天大于 12 或不是转换日期可能 错了。

以文本形式存储在数据库中时的当前格式示例:

2009 年 3 月 12 日晚上 11:32:40 2009 年 3 月 13 日晚上 11:32:40

如果我只是从设计视图中转换该字段的数据类型 从文本到日期/时间日期类型的表格我得到以下内容:

2009 年 3 月 12 日晚上 11:32:40 2009 年 13 月 3 日晚上 11:32:40

我将如何修复存储的值? 我不太关心日期将显示的格式,因为我将能够 轻松改变它的外观,但让它们正确地从文本转换为 日期/时间已被证明是棘手的。

最好我想直接从访问中修复它,但如果需要,我可以从 C# 中修复它。

谢谢。

【问题讨论】:

  • 你现在如何转换它?

标签: ms-access date format textfield


【解决方案1】:

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

【讨论】:

  • 希望这是 OP 正在进行的一次性操作。否则,您几乎可以保证某些用户会更改他/她的日期设置并破坏应用程序。
  • 解决这个问题的常用方法是:使用明确的日期格式,例如 dd-mmm-yyyy(例如,2009 年 6 月 17 日)或使用 DateSerial。请记住,Jet SQL 以美国形式解释未指定的日期,即 mm/dd/yyyy。如果您的本地日期设置是 dd/mm/yyyy,这当然是灾难性的。
【解决方案2】:

Format(CDate("3/13/2009 11:32:40 PM"), "mm/dd/yyyy" 将为您提供 03/13/2009

【讨论】:

    【解决方案3】:

    您的当前问题已经得到了很好的答案,但是您似乎正在以 dmy 格式运行您的系统。因此,您应该注意以下事项。

    SQL 语句要求日期要么完全明确,要么采用 mm/dd/yy 或 mm/dd/yyyy 格式。否则,Access/Jet 将尽最大努力根据正在使用的具体日期来解释结果未知的日期。您不能假设您正在使用的系统正在使用这些日期格式。因此,您应该使用以下网页中的逻辑。

    以美国#mm/dd/yyyy# 格式返回日期 http://www.mvps.org/access/datetime/date0005.htm

    【讨论】:

    • yyyy-mm-dd 对于 Access 数据库引擎来说是明确的,并且具有成为 ISO 8601 标准的巨大优势。
    【解决方案4】:

    Access 中的导入功能具有不错的日期解析功能,并且可以让您指定多种不同的格式。不确定如何最好地将其应用于 Access 中已有的内容 - 一种快速方法可能是将数据复制到 Excel,然后重新导入。

    【讨论】:

    • 我实际上一开始就尝试过,但对我没有用。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-24
    相关资源
    最近更新 更多