Access 2000:十进制转换为小时和分钟

发布于 2024-07-25 17:11:00 字数 263 浏览 8 评论 0原文

在 Access 2000 中的 SQL 查询中,我有一个包含以下数字的字段:

  • 0,15
  • 1,30
  • 1
  • 0,50

其中 x, 是小时,,xx 是分钟。

我需要将此字段转换为 DateTime (或 Access 等效字段),因为我稍后需要对报告中的时间值求和。

如何将该字段转换为 DateTime

In my SQL query in Access 2000, I have a field containing numbers like:

  • 0,15
  • 1,30
  • 1
  • 0,50

Where x, is the hour, and ,xx is the minutes.

I need to convert this field into a DateTime (or the Access equivalent) field, because I later need to sum on the time values in a report.

How can I convert that field into DateTime?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

撩人痒 2024-08-01 17:11:01

假设包含数字数据的列名为“Num_Time”,您可以使用此查询来获取包含该时间信息的日期列:

select CDate(CStr(Fix(Num_Time)) + ':' + 
   CStr(CLng((sgn(Num_Time) * Num_Time - Fix(Num_Time)) * 100)) + ':00') as RealTime
from myTable

该查询将您的列转换为格式为“hh:mm:ss”的字符串,该字符串可以传递给 CDate函数获取具有给定时间的 Date 对象。 (查询不处理列中的空值或无效值。)

Assuming your column with numeric data is named "Num_Time" you can use this query to get a Date column with that time info:

select CDate(CStr(Fix(Num_Time)) + ':' + 
   CStr(CLng((sgn(Num_Time) * Num_Time - Fix(Num_Time)) * 100)) + ':00') as RealTime
from myTable

The query converts your column in a string of format "hh:mm:ss" which can be passed to the CDate function to get a Date object with the given time. (The query doesn't take care of null or invalid values in the column.)

如果没有 2024-08-01 17:11:01

为了构造一个 DATETIME 值,您需要一个日期(!!)

我不确定您的确切用法,但要聚合您可以考虑使用 INTEGER 值的值某个时间颗粒,例如分钟:

• 0,15  ->  15
• 1,30  ->  90
• 1     ->  60
• 0,50  ->  50

In order to construct a DATETIME value you need a date (!!)

I'm not sure your exact usage but to aggregate the values you could consider using an INTEGER value of a certain time granule e.g. minutes:

• 0,15  ->  15
• 1,30  ->  90
• 1     ->  60
• 0,50  ->  50
桃扇骨 2024-08-01 17:11:01

如果你的时间超过一天,不确定约会时间会给你带来什么。 您需要获取总分钟数并将其转换为小时:分钟。

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]

这会将您的时间变成分钟加上其他分钟。 现在您只需将所有分钟的总和转回小时即可。

If you time goes over a day, not sure what having a datetime is going to do for you. You need to get the total minutes and convert to hours : minutes.

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]

This turns your hours to minutes plus the other minutes. Now you just have to turn the sum of all the minutes back to hours.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文