YYYYMMDD到日期字符串结合多个日期条件

时间:2014-04-10 14:59:59

标签: sql date ms-access

我认为我遇到的问题似乎是两个因素的结合,因此我在标题中进行了组合。

我在表格中有两个字段,它们是文本格式的YYYYMMDD。

我正在尝试创建一个查询,首先将这两列转换为mm / yy / yyyy的日期格式(数据稍后将导出到excel),并在两个字段中设置参数化标准。

因此,例如,我想只看到efffrom字段小于输入日期的数据,以及effto字段大于另一个输入日期的数据。

我尝试过使用DateValue和cdate,但我似乎没有走得太远。我可以正确处理日期部分,但是当我尝试使用第二个标准时(不是第一个标准正常工作),我在条件表达式中得到了数据类型不匹配'错误。

我不确定我能提供哪些东西可以帮助我,但我很感激任何解决方案。

2 个答案:

答案 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

enter image description here

然后以yyyyMMdd格式的文本字段添加了一些值:

enter image description here

下一步是添加数据类型为Date/Time的新列:

enter image description here

然后运行以下SQL将新列更新为相应的日期:

UPDATE  Table1
SET     DateFieldCopy = DATESERIAL(LEFT(DateField,4), MID(DateField,5,2), RIGHT(DateField,2));

最后,您可以删除旧列,并重命名新列:

enter image description here

现在您的列格式正确,您可以使用format函数以您想要的任何格式获取数据。以下查询应该提供您想要的格式:

SELECT  ID, DateField, FORMAT([DateField], "MM/dd/yyyy") AS FormattedDate
FROM    Table1;

enter image description here