【问题标题】:Have DateDiff Show Decimals让 DateDiff 显示小数
【发布时间】:2015-11-15 10:58:50
【问题描述】:

我正在使用 DateDiff 函数,但我希望它给我 3 个小数位。应该如何更改我的查询以达到这样的结果? -- 我需要通过查询本身而不是 VBA 函数来完成。

Date123: DateDiff('d', [startdate], [enddate])

【问题讨论】:

  • DateDiff('d',StDt ,EnDt ) 只会给你整数。你只想显示一个带 3 位小数的整数吗?如果您想获得部分天数,则必须进行 DateDiff('h', StDt, EnDt)/24 之类的计算。
  • @JohnnyBones - 然后我将其更改为小时,然后以这种方式获得小数。感谢您的洞察力!
  • @RashidAbib - 根据您想要获得的准确度,您还可以使用“m”(分钟)或“s”(秒),然后除以适当的分钟数或秒数日。当然,这假设您有一个 datetime 字段而不是 date 字段,但如果您的后端数据是 Access,那应该不是问题。

标签: ms-access datediff


【解决方案1】:

对于可以放入查询的行,我会使用类似以下的内容。

Format(DateDiff("s",[DateOne],[DateTwo])/60/60/24,"#.###")

更好的做法是在数据库的模块中创建一个函数,如下所示。然后通过查询调用它。代码更易于维护、测试和理解。

Public Function DateDiffInFractions(DateOne As Date, DateTwo As Date) As String
    Dim SecondsDiff As Double
    SecondsDiff = DateDiff("S", DateOne, DateTwo) / 24 / 60 / 60    'Days/hours/minutes/seconds
    DateDiffInFractions = Format(SecondsDiff, "0.000")              'Format to 3 Decimal points. Return string
End Function

【讨论】:

  • 可以看后续here
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-03-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-10-09
相关资源
最近更新 更多