SQL - 我有两个日期字符串 return len(9)、m/dd/yyyy 和 mm/d/yyyy。什么有助于选择格式?

SQL - I have two date strings the return len(9), m/dd/yyyy and mm/d/yyyy. What would help choose the formatting?

这有点难以填充背景故事。我使用的软件只能识别 mm/yyyy 或 m/yyyy 格式的固定日期,但它可以从 MS Access 中的 table 读取链接日期。在程序中,您可以选择将 Access 链接日期转换为软件中存储的固定日期。当它转换为一个固定值时,它可以以多种形式写入日期,但给我带来麻烦的是当它以这两种格式“m/dd/yyyy”或“mm/d/yyyy”中的任何一种写入时,因为这两种格式这些 return 长度为 9。下面的代码是我如何处理长度为 6、7、8 或 10 的其他格式。我只注意到 len 9 的错误,因为我终于遇到了这样的情况:日期为“m/dd/yyyy”,它导致软件出错,因为我的查询将日期“更正”为“m//yyyy”格式。我无法控制它如何写日期。软件公司知道这个问题,并会在下一次更新中解决它,但我不知道什么时候会推出,所以我需要一个解决方法,直到那时。

使用下面的方法将 return“m//yyyy”或“mm/yyyy”。我怎样才能让它选择处理“m/dd/yyyy”格式来输出“m/yyyy”而不是有两个反斜杠?这不是我的代码,这里有人为回答上一个问题而写的。我不是很擅长任何编程语言,但我对函数有基本的了解。

IIf(Len([Expression])=6,"0" & [Expression],
IIf(Len([Expression])=7,[Expression],
IIf(Len([expression])=8,Left([Expression],1) & "/" & Right([expression],4),
IIf(Len([expression])=9,Left([Expression],2) & "/" & Right([expression],4),
IIf(Len([expression])=10,Left([Expression],2) & "/" & Right([expression],4))))))

我的猜测是包含一个嵌套的 AND 函数或类似的东西,但我不知道如何让它正常工作,然后我必须做一些类似 IfElse 语句的事情来处理“mm/d/yyyy" 格式。我确信有一种更有效的方法来获得解决方案,我会很感激真正知道他们在做什么的人的帮助,而不是我在下个月摸索着解决它并在我的办公桌上敲打我的头。

If Len[Expression]=9 AND Left[Expression],2 = "/", Left([Expression],1) & "/" & Right([Expression],4) Else Left([Expression],2) & "/" & Right([Expression],4)

尝试为长度为 9 个字符的项目添加替换函数:

IIf(Len([expression])=9,Replace(Left([Expression],2) & "/" & Right([expression],4), "//","/"),

始终将日期和时间处理为 Date,而不是 Text,而不是数字,没有例外。

因此,将您的真实日期值(您可以读取的值)格式化为所需的文本格式:

TextMonthYear = Format([YourTrueDate], "mm\/yyyy")