From 9dfa2845bb0b51ad9c8edd06cfbfea0ad5d2725d Mon Sep 17 00:00:00 2001 From: mertmit Date: Tue, 26 Apr 2022 10:40:07 +0300 Subject: [PATCH] fix: using functions for DATEADD interval Signed-off-by: mertmit --- .../lib/dataMapper/lib/sql/functionMappings/pg.ts | 13 ++----------- .../dataMapper/lib/sql/functionMappings/sqlite.ts | 4 ++-- 2 files changed, 4 insertions(+), 13 deletions(-) diff --git a/packages/nocodb/src/lib/dataMapper/lib/sql/functionMappings/pg.ts b/packages/nocodb/src/lib/dataMapper/lib/sql/functionMappings/pg.ts index ffc5d03d0e..7a72c16e14 100644 --- a/packages/nocodb/src/lib/dataMapper/lib/sql/functionMappings/pg.ts +++ b/packages/nocodb/src/lib/dataMapper/lib/sql/functionMappings/pg.ts @@ -35,17 +35,8 @@ const pg = { }, DATEADD: ({ fn, knex, pt, colAlias }: MapFnArgs) => { return knex.raw( - `CASE - WHEN CAST(${fn(pt.arguments[0])} AS text) LIKE '%:%' THEN - ${fn(pt.arguments[0])} + INTERVAL '${fn(pt.arguments[1])} - ${String(fn(pt.arguments[2])).replace( - /["']/g, - '' - )}' - ELSE - ${fn(pt.arguments[0])} + INTERVAL '${fn(pt.arguments[1])} - ${String(fn(pt.arguments[2])).replace(/["']/g, '')}' - END${colAlias}` + `${fn(pt.arguments[0])} + (${fn(pt.arguments[1])} || + '${String(fn(pt.arguments[2])).replace(/["']/g, '')}')::interval${colAlias}` ); } }; diff --git a/packages/nocodb/src/lib/dataMapper/lib/sql/functionMappings/sqlite.ts b/packages/nocodb/src/lib/dataMapper/lib/sql/functionMappings/sqlite.ts index 67bfe7e88b..241924640a 100644 --- a/packages/nocodb/src/lib/dataMapper/lib/sql/functionMappings/sqlite.ts +++ b/packages/nocodb/src/lib/dataMapper/lib/sql/functionMappings/sqlite.ts @@ -64,13 +64,13 @@ const sqlite3 = { STRFTIME('%Y-%m-%d %H:%M', DATETIME(DATETIME(${fn( pt.arguments[0] )}, 'localtime'), - '${dateIN > 0 ? '+' : ''}${fn(pt.arguments[1])} ${String(fn(pt.arguments[2])).replace( + ${dateIN > 0 ? '+' : ''}${fn(pt.arguments[1])} || ' ${String(fn(pt.arguments[2])).replace( /["']/g, '' )}')) ELSE DATE(DATETIME(${fn(pt.arguments[0])}, 'localtime'), - '${dateIN > 0 ? '+' : ''}${fn(pt.arguments[1])} ${String(fn(pt.arguments[2])).replace( + ${dateIN > 0 ? '+' : ''}${fn(pt.arguments[1])} || ' ${String(fn(pt.arguments[2])).replace( /["']/g, '' )}')