Skip to content

Commit fb18900

Browse files
committed
Correct dremio date interval functions
1 parent bb86016 commit fb18900

File tree

1 file changed

+18
-2
lines changed

1 file changed

+18
-2
lines changed

packages/cubejs-dremio-driver/driver/DremioQuery.js

Lines changed: 18 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -59,11 +59,27 @@ class DremioQuery extends BaseQuery {
5959
}
6060

6161
subtractInterval(date, interval) {
62-
return `DATE_SUB(${date}, INTERVAL ${interval})`;
62+
const intervalParts = interval.trim().split(' ');
63+
const intervalNumber = parseInt(intervalParts[0]);
64+
const intervalName = intervalParts[1].toLowerCase();
65+
if (intervalName == 'quarter') {
66+
intervalParts[0] = intervalNumber * 3;
67+
intervalParts[1] = 'month';
68+
}
69+
70+
return `DATE_SUB(${date}, CAST(${intervalParts[0]} as INTERVAL ${intervalParts[1]}))`;
6371
}
6472

6573
addInterval(date, interval) {
66-
return `DATE_ADD(${date}, INTERVAL ${interval})`;
74+
const intervalParts = interval.trim().split(' ');
75+
const intervalNumber = parseInt(intervalParts[0]);
76+
const intervalName = intervalParts[1].toLowerCase();
77+
if (intervalName == 'quarter') {
78+
intervalParts[0] = intervalNumber * 3;
79+
intervalParts[1] = 'month';
80+
}
81+
82+
return `DATE_ADD(${date}, CAST(${intervalParts[0]} as INTERVAL ${intervalParts[1]}))`;
6783
}
6884

6985
timeGroupedColumn(granularity, dimension) {

0 commit comments

Comments
 (0)