如何在 datetrunc 中获取上一年的值?

how to get previous year values in datetrunc?

我有一个计算器来获取当年的外部雇员,但我也想创建一个字段来获取去年的雇员。

if datetrunc('year',today())-1 = datetrunc('year',[Start Date]) then [Start Date] else null END

today()-1 会 = 2020,但它没有给我任何值,只是 null

DATETRUNC 的问题在于它将其保留为 DATE 字段。您不能从日期字段中减去 1。您必须使用 DATEADD 函数(参见第二个示例)

只使用 YEAR()(或 DATEPART("year", [field]))更容易,但我更喜欢 YEAR(),因为它更短)。这会将数据类型更改为整数,您可以从中减去。

IF (YEAR(TODAY())-1 = YEAR([Start Date])) THEN [Start Date] END

else null 也是不必要的,但为了完整性可以包括在内。不匹配IF语句则为NULL。

另一种选择是使用 DATEADD 函数,因为您可以使用它向日期字段添加间隔,但有点乏味:

IF(
 DATEADD("year", -1, DATETRUNC("year", TODAY)) = DATETRUNC("year", [Start Date])
) THEN [Start Date] END

您仍然需要 DateTrunc 开始日期。这基本上会将月份和日期设置为 1。