我在MSAccess中有一个表,它是从另一个软件生成的。在该表中,有一个带有日期/时间元素的colmn。这是一个简短的内容:
day,month,year,hour,minute
1,3,2011,17,21
1,2,2011,18,33
任务是构建MSAccess SQL,它按照由该数据形成的日期/时间对行进行排序。有没有办法做到这一点,没有全部转换为秒?
提前谢谢
答案 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]
我认为情况并非如此,或者你很容易想到这一点。