我有一个非常基本的查询,但我希望它从最早的时间到最新的顺序返回结果。相关专栏是“短时间”。这就是我现在所拥有的:
SELECT *
FROM tasksetup
ORDER BY whenend ASC
使这个工作的正确语法是什么?
作为更新:
当我运行此查询时,它完成后工作得很好。但是,完成的查询不按照我喜欢的方式排序。它返回的结果与表中的顺序大致相同,而不是按whenend
排序。
更新2:我猜它确实有效。我不知道昨天有什么不同,但现在它的订购很好。哦计算机科学。
答案 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