В моем SQL-запросе в Access 2000 у меня есть поле, содержащее такие числа, как:
- 0,15
- 1,30
- 1
- 0,50
Где x - час, а xx - минуты.
Мне нужно преобразовать это поле в поле DateTime
(или эквивалент в Access), потому что позже мне нужно будет суммировать значения времени в отчете.
Как я могу преобразовать это поле в DateTime
?
3 ответа
Предполагая, что ваш столбец с числовыми данными называется "Num_Time", вы можете использовать этот запрос для получения столбца Date с этой информацией о времени:
select CDate(CStr(Fix(Num_Time)) + ':' +
CStr(CLng((sgn(Num_Time) * Num_Time - Fix(Num_Time)) * 100)) + ':00') as RealTime
from myTable
Запрос преобразует ваш столбец в строку формата «чч: мм: сс», которую можно передать функции CDate, чтобы получить объект Date с заданным временем. (Запрос не обрабатывает пустые или недопустимые значения в столбце.)
Чтобы построить значение DATETIME
, вам нужна дата (!!)
Я не уверен, что вы точно используете, но для агрегирования значений вы могли бы рассмотреть возможность использования значения INTEGER
определенной временной гранулы, например минут:
• 0,15 -> 15
• 1,30 -> 90
• 1 -> 60
• 0,50 -> 50
Если у вас время превышает день, не уверен, что для вас будет иметь datetime. Вам нужно получить общее количество минут и преобразовать в часы: минуты.
Select
CInt(Left([Num_Time],InStr([Num_Time],",")))*60 + CInt(Right([Num_Time],Len([Num_Time])-InStr([Num_Time],","))) as [Total_Minutes]
From [Your_Table]
Это превратит ваши часы в минуты плюс другие минуты. Теперь вам просто нужно вернуть сумму всех минут обратно в часы.
Похожие вопросы
Новые вопросы
ms-access
Microsoft Access, также известный как Microsoft Office Access, является средством разработки приложений и баз данных от Microsoft. Он сочетает в себе Microsoft Jet / ACE Database Engine с графическим интерфейсом пользователя и инструментами разработки программного обеспечения. Другие механизмы базы данных, такие как SQL Server, также могут использоваться в качестве сервера базы данных для приложений Access.