【问题标题】:Calculating days difference in a calculated field计算计算字段中的天数差异
【发布时间】:2016-12-16 15:23:04
【问题描述】:

我已经尝试了所有我能想到的变化。

我有一个在字段中显示 [Appt Date] 的表格。我想从今天减去那个日期,得到 [Days to Appt]。

我在计算字段的表达式构建器中尝试了几种变体

=DateDiff("d",[Appt Date]-Date())
=[Appt Date]-Date()

等等。

我不断收到的错误消息是

表达式 [APPT Date]-Date() 不能在计算列中使用。

我已在 日期/时间 计算字段和 数字 计算字段

中尝试过此操作

感谢您的帮助

【问题讨论】:

    标签: ms-access-2010 calculated-field database-table


    【解决方案1】:

    首先,不要使用计算字段。使用查询,这就是它们的用途。

    其次,使用正确的 DateDiff 语法:

    Select *, DateDiff("d", Date(), [Appt Date]) As Days From YourTable
    

    如果[Appt Date] 保存没有时间部分的日期值,您甚至可以逃脱:

    Select *, [Appt Date] - Date() As Days From YourTable
    

    如果[Appt Date]不是数据类型Date,先转换成Date:

    Select *, DateDiff("d", Date(), DateValue([Appt Date])) As Days From YourTable
    Select *, DateValue([Appt Date]) - Date() As Days From YourTable
    

    【讨论】:

    • 如何将它作为字段添加到我的表中?如果有查询是为了这个目的。那里的计算字段有什么用?我可以计算 [Appt_date]-7 但我想以天为单位计算差异。
    • 计算字段是一些针对“超级用户”的残缺功能。正如您所见,它不接受函数 - 正如 Date() 一样。忘记这个功能吧——它只会带来麻烦。
    【解决方案2】:

    比较日期似乎很困难。我自己开发一个日历我发现,Microsoft Access 2010 为明显相等的日期/时间提供了非常不同的值。对我来说比较日期首先是将日期计算为长值。

    Dim longTermDate As Long longTermDate = CLng(PubDateDateActual * 10000)

    如果满足以下条件,则可以避免日期或时间的浮动行为 通过截断日期的右侧部分来截断。

    然后我可以比较日期。我的日历应用也能正常工作。

    来自德国巴伐利亚奥托布伦的问候

    【讨论】:

    • 比较日期并不难。 DateDiff 就是这样做的。并且始终将日期处理为日期,而不是字符串,不是数字,没有例外。将日期值乘以 10000 没有什么意义,因为一天是 3600 分钟或 86400 秒。
    猜你喜欢
    • 2015-12-30
    • 1970-01-01
    • 2020-02-19
    • 1970-01-01
    • 1970-01-01
    • 2020-12-29
    • 2016-06-14
    • 2022-11-29
    相关资源
    最近更新 更多