MS Access日期排序,日期/时间组件组合在一个文本字段中

时间:2011-11-03 13:39:01

标签: ms-access datetime

我在MSAccess中有一个表,它是从另一个软件生成的。在该表中,有一个带有日期/时间元素的colmn。这是一个简短的内容:

day,month,year,hour,minute 
1,3,2011,17,21
1,2,2011,18,33

任务是构建MSAccess SQL,它按照由该数据形成的日期/时间对行进行排序。有没有办法做到这一点,没有全部转换为秒?

提前谢谢

1 个答案:

答案 0 :(得分:2)

有几种方法可以在不转换为正确的日期/时间格式的情况下完成,但它们都会变慢。如果可以将该字段转换为正确的日期/时间字段(或者甚至添加额外的字段以保存正确格式化的日期/时间),那么您应该这样做并确保该字段已编入索引。

如果您真的受到约束并且必须按原样处理该表,那么最直接的方法是编写一个将该字符串转换为日期/时间并按该函数排序的函数。

这是一个快速示例功能:

Function ConvertDateTime(dt As String) As Date
Dim Flds As Variant
    Flds = Split(dt, ",")
    ConvertDateTime = DateSerial(Flds(2), Flds(1), Flds(0)) + _
                      TimeSerial(Flds(3), Flds(4), 0)
End Function

然后您的查询将包含以下Order By子句:

ORDER BY ConvertDateTime([day,month,year,hour,minute])

编辑:您提出的问题有点含糊不清。如果您实际上有五个单独的列,那么排序很简单:ORDER BY [Year], [Month], [Day], [Hour], [Minute]
我认为情况并非如此,或者你很容易想到这一点。