如何按列次排序Access查询

时间:2010-11-05 20:02:52

标签: sql ms-access

我有一个非常基本的查询,但我希望它从最早的时间到最新的顺序返回结果。相关专栏是“短时间”。这就是我现在所拥有的:

SELECT *
FROM tasksetup
ORDER BY whenend ASC

使这个工作的正确语法是什么?

作为更新: 当我运行此查询时,它完成后工作得很好。但是,完成的查询不按照我喜欢的方式排序。它返回的结果与表中的顺序大致相同,而不是按whenend排序。

更新2:我猜它确实有效。我不知道昨天有什么不同,但现在它的订购很好。哦计算机科学。

1 个答案:

答案 0 :(得分:2)

我不明白为什么你的查询不起作用...除非包括一个在你的格式中看不到的日期组件。 Jet / ACE日期/时间数据类型始终包括表示日期的整数组件;小数分量代表一天中的时间。

看看你得到了什么:

SELECT Format(whenend, "yyyy/mm/dd hh:nn:ss") AS full_date_time
FROM tasksetup
ORDER BY 1 ASC

也许立即窗口中的此会话将有助于阐明日期/时间数据类型:

? Now()
11/5/2010 2:19:54 PM 
? Format(Now(), "short time")
14:20
? CDbl(Now())
 40487.5977546296 
? CDate(0)
12:00:00 AM 
? Format(CDate(0), "yyyy/mm/dd hh:mm:ss")
1899/12/30 00:00:00

更新:我创建了一个名为tasksetup的表,其中一个名为whenend的日期/时间字段,字段的Format属性设置为Short Time。我添加了2行。运行原始查询会产生此结果,显然错误:

whenend
2:00
1:00

然而,我建议的查询运行没有错误,并揭示了真正发生的事情:

full_date_time
1899/12/30 02:00:00
2010/11/06 01:00:00

您可以使用TimeValue()函数忽略日期/时间值的日期组件。也许这个查询会给你最初想要的结果。

SELECT TimeValue(whenend) AS ignore_dates
FROM tasksetup
ORDER BY 1 ASC;

ignore_dates
1:00:00 AM
2:00:00 AM