如何在 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。
我有一个计算器来获取当年的外部雇员,但我也想创建一个字段来获取去年的雇员。
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。