使 Redshift 的 DATEDIFF 表现为 MySQL 的 TIMESTAMPDIFF

Posted

技术标签:

【中文标题】使 Redshift 的 DATEDIFF 表现为 MySQL 的 TIMESTAMPDIFF【英文标题】:Make DATEDIFF of Redshift behave as TIMESTAMPDIFF of MySQL 【发布时间】:2016-03-02 03:25:57 【问题描述】:

mysql 中,TIMESTAMPDIFF(MONTH, '2016-01-31', '2016-02-01') 返回0

Redshift 中,DATEDIFF(MONTH, '2016-01-31', '2016-02-01') 返回1

如何使Redshift 中的DATEDIFF(MONTH, '2016-01-31', '2016-02-01') 返回0

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

【问题讨论】:

【参考方案1】:

MONTHS_BETWEEN 是解决这个问题的好方法。

例子:

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

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

【讨论】:

以上是关于使 Redshift 的 DATEDIFF 表现为 MySQL 的 TIMESTAMPDIFF的主要内容,如果未能解决你的问题,请参考以下文章

将 DATEDIFF 从 SQL Server 转换为 redshift

Redshift:DateDiff 调用上的 SqlAlchemy 错误

几年之间的DateDiff导致错误的结果

通过任何人的 COPY 操作使 Redshift 可以访问 S3 文件的最佳实践

如何在 AWS REDSHIFT 中使现有列不为空?

Redshift上的闪亮缓慢