Сортировка даты MS Access с компонентами даты / времени, объединенными в одном текстовом поле - PullRequest
0 голосов
/ 03 ноября 2011

У меня есть таблица в MSAccess, которая генерируется из другого программного обеспечения.В этой таблице есть столбец с элементами даты / времени.Вот краткое содержание:

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

Задача состоит в том, чтобы создать MSAccess SQL, упорядочивающий строки по дате / времени, сформированные с этими данными.Есть ли способ сделать это без преобразования всего в секунды?

Заранее спасибо

1 Ответ

2 голосов
/ 03 ноября 2011

Есть несколько способов сделать это без конвертации в правильный формат даты / времени, но все они будут очень медленными. Если вообще возможно преобразовать это поле в правильное поле даты / времени (или даже добавить дополнительное поле для хранения правильно отформатированных даты / времени), тогда вы должны сделать это и быть уверенным, что поле проиндексировано.

Если вы действительно ограничены и должны иметь дело с таблицей как есть, самый простой способ сделать это - написать функцию, которая переводит эту строку в дату / время и сортирует по этой функции.

Вот функция быстрой выборки:

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]
Я предположил, что это не тот случай, иначе вы бы легко это выяснили.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...