使 Redshift 的 DATEDIFF 表现为 MySQL 的 TIMESTAMPDIFF

Make DATEDIFF of Redshift behave as TIMESTAMPDIFF of MySQL

MYSQL, TIMESTAMPDIFF(MONTH, '2016-01-31', '2016-02-01') returns 0.

Redshift, DATEDIFF(MONTH, '2016-01-31', '2016-02-01') returns 1.

如何将Redshift中的DATEDIFF(MONTH, '2016-01-31', '2016-02-01')变为return0

目前我正在使用DATEDIFF(DAY, '2016-01-31', '2016-02-01')/30。但这还不够好,因为有些月份有 28-31 天。

MONTHS_BETWEEN很好的解决了这个问题。

示例:

select months_between('1969-03-18', '1969-01-18') as months; 

您可以在 redshift documentation 中阅读更多相关信息。