我认为我遇到的问题似乎是两个因素的结合,因此我在标题中进行了组合。
我在表格中有两个字段,它们是文本格式的YYYYMMDD。
我正在尝试创建一个查询,首先将这两列转换为mm / yy / yyyy的日期格式(数据稍后将导出到excel),并在两个字段中设置参数化标准。
因此,例如,我想只看到efffrom字段小于输入日期的数据,以及effto字段大于另一个输入日期的数据。
我尝试过使用DateValue和cdate,但我似乎没有走得太远。我可以正确处理日期部分,但是当我尝试使用第二个标准时(不是第一个标准正常工作),我在条件表达式中得到了数据类型不匹配'错误。
我不确定我能提供哪些东西可以帮助我,但我很感激任何解决方案。
答案 0 :(得分:0)
让这个VBA代码成为您的指南:
Public Function DateFromYYYYMMDD(ymdText)
If VarType(ymdText) <> vbString Then
ymdText = CStr(ymdText)
End If
If Len(ymdText) <> 8 Then
Err.Raise 5
End If
DateFromYYYYMMDD = CDate(Left(ymdText, 4) + "-" _
+ Mid(ymdText, 5, 2) _
+ "-" + Right(ymdText, 2))
End Function
希望这有帮助!
答案 1 :(得分:0)
您应该将字段从文本转换为日期/时间。要执行此操作,首先需要添加新列,将转换后的值添加到其中,然后删除旧列,并重命名新列。为此,我开始使用表格Table1
:
然后以yyyyMMdd格式的文本字段添加了一些值:
下一步是添加数据类型为Date/Time
的新列:
然后运行以下SQL将新列更新为相应的日期:
UPDATE Table1
SET DateFieldCopy = DATESERIAL(LEFT(DateField,4), MID(DateField,5,2), RIGHT(DateField,2));
最后,您可以删除旧列,并重命名新列:
现在您的列格式正确,您可以使用format函数以您想要的任何格式获取数据。以下查询应该提供您想要的格式:
SELECT ID, DateField, FORMAT([DateField], "MM/dd/yyyy") AS FormattedDate
FROM Table1;