代码之家  ›  专栏  ›  技术社区  ›  Tommy Jakobsen

访问2000:十进制到小时和分钟

  •  0
  • Tommy Jakobsen  · 技术社区  · 16 年前

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

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

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

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

    我怎么能把那个字段转换成 日期时间 ?

    3 回复  |  直到 13 年前
        1
  •  0
  •   MicSim    16 年前

    假设具有数字数据的列名为“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函数以获取具有给定时间的日期对象。(查询不处理列中的空值或无效值。)

        2
  •  0
  •   onedaywhen    16 年前

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

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

    • 0,15  ->  15
    • 1,30  ->  90
    • 1     ->  60
    • 0,50  ->  50
    
        3
  •  0
  •   JeffO    16 年前

    如果你的时间超过一天,不知道拥有一个日期时间会对你做什么。您需要获取总分钟数并转换为小时:分钟。

    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]
    

    这将把你的时间变为分钟加上其他分钟。现在你只需要把所有的分钟数和小时数相加。