下面的代码可以在我的本地机器mysql 8.0上运行,但不能在postgresql上运行。
DB::raw('sum(CASE WHEN date >= DATE_SUB(CURDATE(), INTERVAL 30 DAY) THEN f.amount ELSE 0 END ) as last_month')
有人知道怎么修理吗?
错误:
syntax error at or near \"30\"\nLINE 1: ...um(CASE WHEN date >= DATE_SUB(CURDATE(), INTERVAL 30 DAY) TH...\n ^ (SQL:
1条答案
按热度按时间vfhzx4xs1#
数据库中的日期函数和语法差别很大。您不能仅仅将这样的代码从一个数据库移植到另一个数据库,并期望它能按原样工作。
postgres需要一个文本字符串作为间隔描述。它还支持标准
filter
要聚合函数和窗口函数,可将代码简化为:如果你愿意的话
0
当组中没有对应的行时: