Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.
MONTHS 函数操纵 TIMESTAMP,或返回两个 TIMESTAMP 值之间的月数。请参见下面的注释部分。
MONTHS( timestamp-expression )
MONTHS( timestamp-expression, timestamp-expression )
MONTHS( timestamp-expression, integer-expression )
timestamp-expression TIMESTAMP 类型的日期和时间。
integer-expression 要添加到 timestamp-expression 中的整数月数(SMALLINT 类型)。如果 integer-expression 是负数,则从 timestamp-expression 中减去相应的月数。如果提供 integer-expression,则必须将 timestamp-expression 显式地转换为 TIME、DATE 或 TIMESTAMP 数据类型。如果 timestamp-expression 为 TIME 值,则会视为当前月份。
有关转换数据类型的信息,请参见CAST 函数 [Data type conversion]。
具有语法 1 或语法 2 的 INTEGER。
具有语法 3 的 TIMESTAMP。
MONTHS 函数的结果取决于其参数。MONTHS 函数忽略其参数中的小时、分钟和秒。
语法 1 如果向 MONTHS 函数传递单个 timestamp-expression 值,此函数会以 INTEGER 形式返回 0000-02 和 timestamp-expression 之间的月数。
0000-02 并不表示实际日期,它是 MONTHS 函数使用的缺省日期。
语法 2 如果向 MONTHS 函数传递两个 TIMESTAMP 值,此函数会返回它们之间的整数月数。
语法 3 如果向 MONTHS 函数传递一个 TIMESTAMP 值和一个 SMALLINT 值,此函数将返回向 timestamp-expression 参数添加整数月数后的 TIMESTAMP 结果。
不使用语法 2,请使用 DATEDIFF 函数。不使用语法 3,请使用 DATEADD 函数。
MONTHS 的值是根据两个日期之间每个月的 1 号的数目计算出的。
SQL/2008 服务商扩充。
以下语句返回值 2,表示第二个日期比第一个日期晚两个月。建议使用第二个示例 (DATEDIFF)。
SELECT MONTHS( '1999-07-13 06:07:12', '1999-09-13 10:07:12' ); SELECT DATEDIFF( month, '1999-07-13 06:07:12', '1999-09-13 10:07:12' );
以下语句返回值 23981。
SELECT MONTHS( '1998-07-13 06:07:12' );
以下语句返回 TIMESTAMP 值 1999-10-12 21:05:07.000。建议使用第二个示例 (DATEADD)。
SELECT MONTHS( CAST( '1999-05-12 21:05:07' AS DATETIME ), 5); SELECT DATEADD( month, 5, '1999-05-12 21:05:07' );