AGE( ) 函数

返回一个指定日期和一个指定截止日期之间经过的天数(账龄),或者当前操作系统日期,或者任何两个日期之间经过的天数。

语法

AGE(日期/日期时间/字符串 <,终止日期>)

参数

名称 类型 描述
日期/日期时间/字符串

字符

日期时间

要进行帐龄分析的域、表达式或字面量值。
终止日期

可选

字符

日期时间

要将日期/日期时间/字符串与其进行比较的域、表达式或字面量值。 如果省略该参数,则当前操作系统日期被用作终止日期。

说明

日期/日期时间/字符串截止日期都可以接受日期时间值。 您不能使用仅带有时间值的 AGE( ) 函数。

有关详细信息,请参见对日期时间数据使用 AGE( )

输出

数值。

示例

基本示例

无截止日期

返回 2014 年 12 月 31 日与当前日期之间的天数。

  • 如果返回正值,则该值等于 2014 年 12 月 31 日早于当前日期的天数。
  • 如果返回负值,则该值等于 2014 年 12 月 31 日晚于当前日期的天数。
  • 如果返回 0,则 2014 年 12 月 31 日为当前日期。
AGE(`20141231`)

返回到期日期域中的每个日期和当前日期之间的天数。

AGE(到期日期)

混用数据类型

返回 518,即两个指定日期之间的天数:

AGE(`20130731`,`20141231`)
AGE("20130731","20141231")
AGE(`20130731`,"20141231")
AGE(`20130731 235959`,`20141231`)

使用截止日期和域

返回到期日期域中的每个日期和截止日期 2014 年 12 月 31 日之间的天数:

  • 终止日期之前的日期返回一个正值,其大小等于该日期早于终止日期的天数
  • 截止日期之后的日期返回一个负值,其大小等于该日期晚于截止日期的天数
AGE(到期日期, `20141231`)

返回 2014 年 12 月 31 日与到期日期域中的每个日期之间的天数。 结果与之前的示例相同,但返回值的符号(正或负)相反:

AGE(`20141231`, 到期日期)

比较域中的日期

返回付款日期域中的每个日期和到期日期域中的相应日期之间的天数:

  • 到期日期之前的付款日期返回正值,表示及时的付款
  • 到期日期之后的付款日期返回负值,表示逾期的付款
AGE(支付日期, 到期日期)

返回付款日期域中的每个日期和到期日期域中的相应日期加上 15 天的宽限期之间的天数。

  • 到期日期之前或最多晚于到期日期 15 天的付款日期返回正值
  • 晚于到期日期 15 天以上的付款日期返回负值,表示超过宽限期逾期付款。
AGE(支付日期, 到期日期+15)

高级示例

提取逾期支付

提取根据截止日期 2014 年 12 月 31 日计算的、发票帐龄超过 180 天的各个记录的名称、金额及发票日期:

EXTRACT FIELDS 名称 金额 发票日期 TO "Overdue" IF AGE(发票日期,`20141231`) > 180

备注

工作原理

AGE( ) 函数计算两个日期之间的天数。

何时使用 AGE( )

使用 AGE( ) 可比较两个日期以确定过期账户,执行余额账龄分析,或者执行任何需要两个日期之间经过的天数的任务。

负返回值

如果为日期/日期时间/字符串指定的值比被指定为截止日期的日期或操作系统日期(如果未指定截止日期)更近,则返回负值。

返回 -518:

AGE(`20141231`, `20130731`)

如果您想要使两个日期之间经过的天数总是正数,而无论哪个日期更近,请将 AGE( ) 函数嵌套在 ABS( ) 函数的内部。

返回 518:

ABS(AGE(`20141231`, `20130731`))

对日期时间数据使用 AGE( )

AGE( ) 函数可以在一个或者两个参数中接受日期时间数据。 但是,如果该数据的时间部分包括 UTC 偏移量(时区标志),您需要小心。

不带 UTC 偏移量的日期时间数据

如果时间数据不包括 UTC 偏移量,则日期时间值的时间部分不会影响 AGE( ) 所执行的日期计算。

带 UTC 偏移量的日期时间数据

如果一个或两个参数中的时间数据包括 UTC 偏移量,则日期时间值的时间部分会影响 AGE( ) 所执行的日期计算。 Analytics在执行计算之前自动调和 UTC 偏移量,如果该调和向前或者向后移动时间以通过午夜边界,则可能导致结果更改 1 天。

有关详细信息,请参见 UTC 偏移量如何影响日期时间表达式

为截止日期使用域

与要求使用字面量日期值作为截止日期的 AGE 命令不同,AGE( ) 函数允许您为截止日期使用域。

例如:

AGE(支付日期, 到期日期)

以此种方式使用 AGE( ) 函数等效于通过在表达式中将两个日期域相减来计算它们之间的差异。

例如:

到期日期 – 付款日期

参数详细信息

日期/日期时间/字符串截止日期指定的日期时间域可以使用任何日期或日期时间格式,前提是域定义正确定义了该格式。

指定日期或日期时间字面值

在为日期/日期时间/字符串截止日期指定字面量日期值时,必须使用下表中的格式,并且必须将值放在反引号、单引号或双引号中 — 例如,`20141231`"20141231"

在日期或时间的各个部分之间,不要使用任何分隔符,如斜杠 (/) 或冒号 (:)。 允许在字符时间值中使用冒号。

  • 日期时间值 - 您可以使用日期、分隔符和下表列出的时间格式的任意组合。 日期必须位于时间前面,并且您必须在两者之间使用分隔符。 有效分隔符是单个空格、字母 't' 或字母 'T'。

    格式示例

    字面值示例

    YYYYMMDD

    `20141231`

    "20141231"

    YYMMDD

    `141231`

    "141231"

    YYYYMMDD hhmmss

    `20141231 235959`

    "20141231 235959"

    YYMMDDthhmm

    `141231t2359`

    "141231t2359"

    YYYYMMDDThh

    `20141231T23`

    "20141231T23"

    YYYYMMDD hhmmss+/-hhmm

    (UTC 偏移量)

    `20141231 235959-0500`

    "20141231 235959-0500"

    YYMMDD hhmm+/-hh

    (UTC 偏移量)

    `141231 2359+01`

    "141231 2359+01"

    说明

    请勿在包含 UTC 偏移量数据的主时间格式中单独使用 hh。 例如,请避免:hh+hhmm。 结果可能不可靠。