diff --git a/packages/nocodb/src/lib/db/sql-data-mapper/lib/sql/functionMappings/mssql.ts b/packages/nocodb/src/lib/db/sql-data-mapper/lib/sql/functionMappings/mssql.ts index 48d0fe0472..1358a87411 100644 --- a/packages/nocodb/src/lib/db/sql-data-mapper/lib/sql/functionMappings/mssql.ts +++ b/packages/nocodb/src/lib/db/sql-data-mapper/lib/sql/functionMappings/mssql.ts @@ -1,3 +1,4 @@ +import dayjs from 'dayjs'; import { MapFnArgs } from '../mapFunctionName'; import commonFns from './commonFns'; import { getWeekdayByText } from '../helpers/formulaFnHelper'; @@ -113,7 +114,11 @@ const mssql = { // DATEPART(WEEKDAY, DATE): sunday = 1, monday = 2, ..., saturday = 7 // WEEKDAY() returns an index from 0 to 6 for Monday to Sunday return knex.raw( - `(DATEPART(WEEKDAY, ${fn(pt.arguments[0])}) - 2 - ${getWeekdayByText( + `(DATEPART(WEEKDAY, ${ + pt.arguments[0].type === 'Literal' + ? `'${dayjs(fn(pt.arguments[0])).format('YYYY-MM-DD')}'` + : fn(pt.arguments[0]) + }) - 2 - ${getWeekdayByText( pt?.arguments[1]?.value )} % 7 + 7) % 7 ${colAlias}` ); diff --git a/packages/nocodb/src/lib/db/sql-data-mapper/lib/sql/functionMappings/mysql.ts b/packages/nocodb/src/lib/db/sql-data-mapper/lib/sql/functionMappings/mysql.ts index 089485cf0e..babad78588 100644 --- a/packages/nocodb/src/lib/db/sql-data-mapper/lib/sql/functionMappings/mysql.ts +++ b/packages/nocodb/src/lib/db/sql-data-mapper/lib/sql/functionMappings/mysql.ts @@ -1,3 +1,4 @@ +import dayjs from 'dayjs'; import { MapFnArgs } from '../mapFunctionName'; import commonFns from './commonFns'; import { getWeekdayByText } from '../helpers/formulaFnHelper'; @@ -59,7 +60,11 @@ const mysql2 = { WEEKDAY: ({ fn, knex, pt, colAlias }: MapFnArgs) => { // WEEKDAY() returns an index from 0 to 6 for Monday to Sunday return knex.raw( - `(WEEKDAY(${fn(pt.arguments[0])}) - ${getWeekdayByText( + `(WEEKDAY(${ + pt.arguments[0].type === 'Literal' + ? `'${dayjs(fn(pt.arguments[0])).format('YYYY-MM-DD')}'` + : fn(pt.arguments[0]) + }) - ${getWeekdayByText( pt?.arguments[1]?.value )} % 7 + 7) % 7 ${colAlias}` ); diff --git a/packages/nocodb/src/lib/db/sql-data-mapper/lib/sql/functionMappings/pg.ts b/packages/nocodb/src/lib/db/sql-data-mapper/lib/sql/functionMappings/pg.ts index 0e4176ce27..4e34629bca 100644 --- a/packages/nocodb/src/lib/db/sql-data-mapper/lib/sql/functionMappings/pg.ts +++ b/packages/nocodb/src/lib/db/sql-data-mapper/lib/sql/functionMappings/pg.ts @@ -1,3 +1,4 @@ +import dayjs from 'dayjs'; import { MapFnArgs } from '../mapFunctionName'; import commonFns from './commonFns'; import { getWeekdayByText } from '../helpers/formulaFnHelper'; @@ -47,7 +48,11 @@ const pg = { // isodow: the day of the week as Monday (1) to Sunday (7) // WEEKDAY() returns an index from 0 to 6 for Monday to Sunday return knex.raw( - `(EXTRACT(ISODOW FROM ${fn(pt.arguments[0])}) - 1 - ${getWeekdayByText( + `(EXTRACT(ISODOW FROM ${ + pt.arguments[0].type === 'Literal' + ? `date '${dayjs(fn(pt.arguments[0])).format('YYYY-MM-DD')}'` + : fn(pt.arguments[0]) + }) - 1 - ${getWeekdayByText( pt?.arguments[1]?.value )} % 7 + 7) % 7 ${colAlias}` ); 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 e6f9f99a7e..4a12f5ee4b 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 @@ -1,3 +1,4 @@ +import dayjs from 'dayjs'; import { MapFnArgs } from '../mapFunctionName'; import commonFns from './commonFns'; import { getWeekdayByText } from '../helpers/formulaFnHelper'; @@ -81,7 +82,11 @@ const sqlite3 = { // strftime('%w', date) - day of week 0 - 6 with Sunday == 0 // WEEKDAY() returns an index from 0 to 6 for Monday to Sunday return knex.raw( - `(strftime('%w', ${fn(pt.arguments[0])}) - 1 - ${getWeekdayByText( + `(strftime('%w', ${ + pt.arguments[0].type === 'Literal' + ? `'${dayjs(fn(pt.arguments[0])).format('YYYY-MM-DD')}'` + : fn(pt.arguments[0]) + }) - 1 - ${getWeekdayByText( pt?.arguments[1]?.value )} % 7 + 7) % 7 ${colAlias}` );