【问题标题】:MS-Access: How to convert a text string in MM/DD/YYYY format to proper date in MS-Access?MS-Access:如何将 MM/DD/YYYY 格式的文本字符串转换为 MS-Access 中的正确日期?
【发布时间】:2018-09-15 00:12:07
【问题描述】:

我有一个包含数百条记录的 MS-Access 数据库表(包含学校的候选人数据),候选人的出生日期保存为文本字符串,严格采用“mm/dd/yyyy”格式。

现在我想要一个查询来检索值,同时将文本字符串值转换为 Date 类型,以便可以对其进行排序(在需要时按日期的 desc 或 asc 顺序)以找出查询中最年长的候选人结果。

我完全失望地发现,字符串“01/11/2003”被转换为日期“01-Nov-2003”(应该是 11-Jan-2003)但是字符串“11/15/ 2002”转换为日期“2002 年 11 月 15 日”。

在这个过程中,我尝试了以下策略,结果都是一样的:

  1. 按照 Gord Thompson 的建议使用自定义 VBA 函数 ConvertMyStringToDateTime
  2. cdate([dob]) 其中 dob 是包含出生日期作为文本字符串的字段名称
  3. DateValue([dob]) 其中 dob 是包含出生日期作为文本字符串的字段名称
  4. Format([dob],"mm/dd/yyyy") 其中 dob 是包含出生日期为文本字符串的字段名称

如何强制转换函数理解我总是将输入文本字符串输入为“mm/dd/yyyy”格式?

【问题讨论】:

  • 非常感谢。虽然这并没有直接解决我的问题,但帮助我换了思路。我回到我的本地机器区域设置并查看了日期选项卡。将短日期格式设置为 MM/dd/yyyy 格式。瞧——做到了。现在上图不一样了。 dob 列中的所有文本字符串日期都得到正确解释。
  • 欢迎您 :) 很高兴能够提供帮助。

标签: ms-access ms-access-2016


【解决方案1】:

使用日期序列:

TrueDoB: DateSerial(Mid([dob], 7, 4 ), Mid([dob], 1, 2), Mid([dob], 4, 2))

这个 sn-p 应该教你将日期存储为日期,而不是文本。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多