2016-04-12 7 views
5

Sagen wir, ich versuche YEAR_MONTH aus den Aufzeichnungen in der user Tabelle zu extrahierenSEQUELIZE: Wie EXTRACT verwenden MySQL-Funktion

Ich kann schreiben:

SELECT EXTRACT(YEAR_MONTH FROM u.created_on) 
FROM user u; 

ich kämpfen, um zu verstehen, wie zu schreiben eine Sequelize-Abfrage, die komplexere MySQL-Methoden beinhaltet.

Ich weiß, dass ich so etwas wie verwenden:

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

für einfache MySQL Methoden, die nehmen nur einen Parameter.

Dies hat in der Nähe, die ich bekommen kann:

[sequelize.fn('extract', ['YEAR', 'FROM'], 
sequelize.col('User.created_on')), 'created_year_month'] 

die in den folgenden SQL-Ergebnisse:

extract('YEAR_MONTH', 'FROM', `User`.`created_on`) AS `created_year_month` 

als

SELECT EXTRACT(YEAR_MONTH FROM u.created_on) 
FROM user u; 

zu

Gegensatz ich ratlos bin als wie ich diese Abfrage richtig aufbauen kann.

Antwort

1

Ich habe ein wenig mehr gegraben und festgestellt, dass die richtige Lösung war, sequelize.literal() zu verwenden, um beliebige Teile zu meiner SQL-Abfrage hinzuzufügen.

Die hier Lösung ist

sequelize.literal('extract(YEAR_MONTH FROM `User`.`created_on`) AS created_year_month') 
zu verwenden