From 3c7d3028e934ed554d4993071766898b535592e6 Mon Sep 17 00:00:00 2001 From: Wing-Kam Wong Date: Mon, 18 Jul 2022 11:56:52 +0800 Subject: [PATCH] feat: WEEKDAY logic for sqlite --- .../lib/sql/functionMappings/sqlite.ts | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/packages/nocodb/src/lib/db/sql-data-mapper/lib/sql/functionMappings/sqlite.ts b/packages/nocodb/src/lib/db/sql-data-mapper/lib/sql/functionMappings/sqlite.ts index e5ba36ed32..343bbe2856 100644 --- a/packages/nocodb/src/lib/db/sql-data-mapper/lib/sql/functionMappings/sqlite.ts +++ b/packages/nocodb/src/lib/db/sql-data-mapper/lib/sql/functionMappings/sqlite.ts @@ -75,6 +75,25 @@ const sqlite3 = { END${colAlias}` ); }, + + WEEKDAY: ({ fn, knex, pt, colAlias }: MapFnArgs) => { + // strftime('%w', date) - day of week 0 - 6 with Sunday == 0 + // WEEKDAY() returns an index from 0 to 6 for Monday to Sunday + const m = { + monday: 0, + tuesday: 1, + wednesday: 2, + thursday: 3, + friday: 4, + saturday: 5, + sunday: 6, + }; + return knex.raw( + `strftime('%w', ${fn(pt.arguments[0])}, 'weekday ${ + m[pt?.arguments[1]?.value.toLowerCase()] || 0 + }')${colAlias}` + ); + }, }; export default sqlite3;