2010-11-05 3 views
0

У меня есть довольно простой запрос, но я бы хотел, чтобы он возвращал результаты в порядке от самого раннего времени до последнего. Столбец, о котором идет речь, является «кратковременным». Это то, что я имею прямо сейчас:Как заказать запрос Access по столбцу раз

SELECT * 
FROM tasksetup 
ORDER BY whenend ASC 

Каков правильный синтаксис, чтобы заставить это работать?

С обновлением: Когда я запускаю этот запрос, он работает отлично, поскольку он завершается. Однако заполненный запрос не упорядочен, как мне хотелось бы. Он возвращает результаты примерно в том же порядке, что и в таблице, а не упорядочен по whenend.

Обновление 2: Я думаю, это действительно работает. Я не знаю, что было вчера, но теперь его порядок просто прекрасен. О компьютерная наука.

+4

Um ... этот синтаксис ** нет ** произведение? Потому что это выглядит правильно для меня. Пожалуйста, уточните, что происходит не так. –

ответ

2

Я не понимаю, почему ваш запрос не работает ... если только whenend не содержит компонент даты, который не отображается в вашем формате. Тип данных даты/времени Jet/ACE всегда включает целочисленный компонент для представления даты; дробная составляющая представляет собой время суток.

Посмотрите, что вы получаете с этим:

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

Возможно, эта сессия в окне Immediate поможет уточнить даты/времени тип данных:

? 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 

Update: Я создал таблицу с именем 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 
+0

Я получаю замечательную «слишком мало параметров. Ожидаемая 1» ошибка при выполнении этого запроса. Это определенно короткое время, а не дата в базе данных. Тип данных - «Дата/Время», но формат «Короткое время». – Jimmy

+0

Извините, я забыл настроить ORDER BY. См. Ревизию выше. – HansUp

+0

Дело в том, что формат управляет только тем, как отображаются данные, а не тем, что хранится. Поле Date/Time всегда будет ** включать компонент даты (целое число). – HansUp