在MS Access数据宏中将字符串转换为日期

时间:2018-07-24 15:46:42

标签: ms-access access-vba type-conversion sharepoint-2013

我正在努力将字符串转换为链接到SharePoint 2013列表的表上的MS Access 2010数据宏中的日期。

这些工作正常:

  •   

    FormatDateTime(Now())

  •   

    FormatDateTime(Date())

  •   

    FormatDateTime([SharePointModifiedDate])(其中“ SharePointModifiedDate”是包含上次修改记录日期的字段)

这些无效:

  •   

    FormatDateTime('07 / 07/2017')

  •   

    FormatDateTime(“ 07/07/2017”)

  •   

    FormatDateTime(“ 2017/07/07”,2)

  •   

    FormatDateTime(“ 2017年7月7日00:00:00”)

系统基于英国日期/时间。

您能提供的任何帮助将不胜感激。

3 个答案:

答案 0 :(得分:1)

您可以通过多种方式指定DateTime值:

  1. 将日期用井号/井号括起来作为文字日期:

    FormatDateTime(#07/07/2017#)
    

    请注意,除非第一个数字大于12,否则它将把日期解释为mm/dd/yyyy。强制将其解释为dd/mm/yyyy

    为避免混淆,您可以使用ISO 8601格式指定日期,即yyyy-mm-dd,以确保没有歧义:

    FormatDateTime(#2017-07-07#)
    
  2. 使用DateValue函数将字符串转换为日期:

    FormatDateTime(DateValue('07/07/2017'))
    

    同样,默认情况下,除非第一个值大于12,否则默认情况下将以mm/dd/yyyy格式解释字符串值。

  3. 使用DateSerial函数:

    FormatDateTime(DateSerial(2017, 7, 7))
    

答案 1 :(得分:0)

所有尝试都是将日期转换为字符串。

但是,标题要求将字符串转换为日期,这就是 DateValue 的作用。因此:

Dim TrueDate As Date

TextDate = "25-07-2018"
TrueDate = DateValue(TextDate)

答案 2 :(得分:0)

我找到了一个对自己有用的问题的答案,因此我认为我应该在这里发布它,以使他人受益:

enter image description here

我的问题是我认为FormatDateTime()是转换函数;但是不是。

相反,我使用了这个:

  

DateSerial(CDbl(Mid([strDate],2,4)),CDbl(Mid([strDate],7,2)),CDbl(Mid([strDate],10,2)))

(strDate为“ 2016-09-12T10:21:10状态已更新为PO4.3”)。

这对我来说很好。