SEQUELIZE:如何使用 EXTRACT MySQL 函数
SEQUELIZE: How to use EXTRACT MySQL function
假设我正在尝试从 user
table
中的记录中提取 YEAR_MONTH
我会写:
SELECT EXTRACT(YEAR_MONTH FROM u.created_on)
FROM user u;
我很难理解如何编写涉及更复杂 MySQL 方法的 sequelize 查询。
我知道我可以使用类似的东西:
sequelize.fn('avg', sequelize.col('User.age')), 'avg_age']
对于仅采用一个参数的简单 MySQL 方法。
这是我能得到的最接近的:
[sequelize.fn('extract', ['YEAR', 'FROM'],
sequelize.col('User.created_on')), 'created_year_month']
结果如下 SQL:
extract('YEAR_MONTH', 'FROM', `User`.`created_on`) AS `created_year_month`
相对于
SELECT EXTRACT(YEAR_MONTH FROM u.created_on)
FROM user u;
我不知道如何正确构建此查询。
我做了更多挖掘,发现正确的解决方案是使用 sequelize.literal()
向我的 SQL 查询添加任意部分。
这里的解决方法是使用
sequelize.literal('extract(YEAR_MONTH FROM `User`.`created_on`) AS created_year_month')
const tasks = await Task.findAll({
attributes: ['id',
[ sequelize.literal('extract(year from "Task"."created_at"::timestamp)'), 'year']
]})
假设我正在尝试从 user
table
YEAR_MONTH
我会写:
SELECT EXTRACT(YEAR_MONTH FROM u.created_on)
FROM user u;
我很难理解如何编写涉及更复杂 MySQL 方法的 sequelize 查询。
我知道我可以使用类似的东西:
sequelize.fn('avg', sequelize.col('User.age')), 'avg_age']
对于仅采用一个参数的简单 MySQL 方法。
这是我能得到的最接近的:
[sequelize.fn('extract', ['YEAR', 'FROM'],
sequelize.col('User.created_on')), 'created_year_month']
结果如下 SQL:
extract('YEAR_MONTH', 'FROM', `User`.`created_on`) AS `created_year_month`
相对于
SELECT EXTRACT(YEAR_MONTH FROM u.created_on)
FROM user u;
我不知道如何正确构建此查询。
我做了更多挖掘,发现正确的解决方案是使用 sequelize.literal()
向我的 SQL 查询添加任意部分。
这里的解决方法是使用
sequelize.literal('extract(YEAR_MONTH FROM `User`.`created_on`) AS created_year_month')
const tasks = await Task.findAll({
attributes: ['id',
[ sequelize.literal('extract(year from "Task"."created_at"::timestamp)'), 'year']
]})