首页 > 解决方案 > 如何将 DATE_TRUNC 转换为 MariaDB?

问题描述

我在 PostgreSQL 中有以下选择语句:

DATE_TRUNC('{{time_interval}}',u.created_at) AS "Signup Date",

其中 {{time_internal}} 是设置为的变量month

我需要将该行转换为 MariaDB,这是我目前所拥有的:

DATE_FORMAT(CURDATE(), u.created_at) AS "Signup Date",

这没有像预期的那样输出结果,让我相信我错误地迁移了这行 SQL。

将 SQL 行从 PostgreSQL 迁移到 MariaDB 时,我做错了什么?

标签: sqlpostgresqlmariadb

解决方案


我认为你需要使用一个case语句:

select (case when @timeinterval = 'day'
             then date(u.created_at)
             when @timeinterval = 'month'
             then u.created_at + interval (1 - day(u.created_at)) day
             when @timeinterval = 'year'
             then makedate(year(u.created_at), 1)
        end) as Signup_Date

还有其他可能性,但是'day''month''year'是最常见的日期部分。


推荐阅读