2009-08-17 6 views
0

Использование Access 2003Как конвертировать Varchar в Datetime?

Таблица

ENO Time 

001 020000 
001 040000 
001 220000 
002 030000 
002 050000 
005 230000 

Итак, на ...,

Время Тип дата Varchar в базе данных. Как преобразовать Varchar в Datetime?

Здесь я хочу получить общее время для ENO.

Select eno, sum (time) from table group by eno 

Это показывает ошибка как - тип критерия ошибок несовпадения данных

Expected Output 

001 26:00:00 
002 08:00:00 

Итак, на ...,

нужно Запрос справки.

ответ

1

Лучше всего работать в считанные секунды. Используйте функцию Mid(), чтобы разбить строку и вычислить количество секунд, суммировать время и затем форматировать результат, как вам нравится. Если вы напишете его как один запрос, вам нужно будет использовать одно и то же длинное выражение в трех разных местах, поэтому для повышения удобочитаемости я сделаю это как два запроса. Первый:

SELECT eno, sum(val(mid(time,1,2))*3600+val(mid(time,3,2))*60+val(mid(time,5,2))) AS secs 
FROM table 
GROUP BY eno; 

Сохраните этот запрос при доступе как «enosums», например. Второй запрос:

SELECT eno, format(secs/3600, "00:") & format((secs/60 Mod 60), "00:") & format(secs Mod 60, "00") 
FROM enosums; 

Поэтому я предлагаю этот метод является то, что даже если вам удастся преобразовать значения даты и времени (которые вы можете сделать с помощью Mid() функция и оператор конкатенации, чтобы преобразовать «ччммсс» string в формат «hh: mm: ss», а затем применить функцию TimeValue), нет простого способа распечатать это в нужном формате, потому что функция Format() будет увеличиваться до 23:59:59, а затем завернуть обратно в 00:00:00.

Смежные вопросы