【问题标题】:MS Access use DATE() in a calculated fieldMS Access 在计算字段中使用 DATE()
【发布时间】:2020-04-08 18:23:57
【问题描述】:
我正在使用 Microsoft Access 2016。我试图找出从当前年份到未来年份存在多少年。我有一列是 end_date。我正在尝试创建一个本质上是 YEAR(end_date) - YEAR(current_year) 的计算字段。我尝试使用 YEAR(DATE()) 但显然不允许在计算字段中使用 DATE()。
有没有办法进行这样的计算?
【问题讨论】:
标签:
date
ms-access
calculated-field
【解决方案1】:
不。计算字段是缓存的和静态的,因此绝不允许包含任何会随时间变化的信息,因为系统设置,或任何其他未直接输入该行的信息。
但是,无论如何,您都不应该使用计算字段。请参阅 http://allenbrowne.com/casu-14.html,在许多提倡不使用计算字段的帖子中。
改为使用查询来进行计算。这样,您在使用当前日期时不会遇到任何问题,也不必处理计算字段带来的可能错误和可移植性问题。
【解决方案2】:
我改变了想法,用一种形式来计算它。在数据库中拥有一个每天都在变化的字段似乎不是一个好习惯。
【解决方案3】:
在表单中,您可以将此表达式用作文本框的控制源:
=DateDiff("yyyy",Date(),[EndDate])
但是,这会返回日历年的差异。要查找 full 年的计数,请使用 AgeSimple 之类的函数和以下表达式:
=AgeSimple([EndDate])