如何在格式为“YYYYMMDD HHMMSS”的VBA中转换日期?

时间:2013-06-26 14:41:45

标签: vba ms-access access-vba

我的日期时间存储为字符串:

"20120515 061115"

将是

"May 15, 2012 at 6 hour 11 minutes 15 second"

如何将此转换为日期时间?也许使用“CDate”功能?

2 个答案:

答案 0 :(得分:3)

CDate的输入格式取决于您的系统区域设置,这使得解析固定格式的值无效。

但是,由于日期组件位于固定位置,最简单的方法是使用字符串函数从原始字符串中提取值:

Dim s As String
Dim d As Date

s = "20120515 061115"
d = DateSerial(Left(s, 4), Mid(s, 5, 2), Mid(s, 7, 2)) _
  + TimeSerial(Mid(s, 10, 2), Mid(s, 12, 2), Mid(s, 14, 2))

答案 1 :(得分:0)

或者您可以通过解析日期然后重新构建它来在查询中执行此操作:

在这个例子中,我的UglyDate看起来像这样: 2010年3月17日星期三晚上10:07

SELECT [Tbl_UglyDate].[UglyDate], Mid([UglyDate],5,3) AS M, Mid([UglyDate],9,2) AS D,
Mid([UglyDate],13,4) AS Y, Month("1 " & [M]) AS M2, 
([M2] & "/" & [D] & "/" & [Y]) AS date1, CVDate([date1]) AS [date] 
FROM [Tbl_UglyDate];