SEQUELIZE:如何使用EXTRACT MySQL功能

Phi*_*ter 6 mysql sequelize.js

假设我正在尝试YEAR_MONTH从user表中的记录中提取

我可以写:

SELECT EXTRACT(YEAR_MONTH FROM u.created_on)
FROM user u;
Run Code Online (Sandbox Code Playgroud)

我正在努力理解如何编写涉及更复杂的MySQL方法的续集查询.

我知道我可以使用类似的东西:

sequelize.fn('avg', sequelize.col('User.age')), 'avg_age']

对于只采用一个参数的简单MySQL方法.

这是我能得到的最接近的:

[sequelize.fn('extract', ['YEAR', 'FROM'],   
 sequelize.col('User.created_on')), 'created_year_month']
Run Code Online (Sandbox Code Playgroud)

这导致以下SQL:

extract('YEAR_MONTH', 'FROM', `User`.`created_on`) AS `created_year_month`
Run Code Online (Sandbox Code Playgroud)

而不是

SELECT EXTRACT(YEAR_MONTH FROM u.created_on)
FROM user u;
Run Code Online (Sandbox Code Playgroud)

关于如何正确构建此查询,我感到很遗憾.

Phi*_*ter 5

我做了更多的挖掘,并意识到正确的解决方案是使用sequelize.literal()向我的 SQL 查询添加任意部分。

这里的解决方案是使用

sequelize.literal('extract(YEAR_MONTH FROM `User`.`created_on`) AS created_year_month')
Run Code Online (Sandbox Code Playgroud)