diff --git a/src/lib/prisma.ts b/src/lib/prisma.ts index 110b4750..844238b9 100644 --- a/src/lib/prisma.ts +++ b/src/lib/prisma.ts @@ -19,6 +19,14 @@ const MYSQL_DATE_FORMATS = { year: '%Y-01-01T00:00:00Z', }; +const POSTGRESQL_DATE_FORMATS = { + minute: 'YYYY-MM-DD HH24:MI:00', + hour: 'YYYY-MM-DD HH24:00:00', + day: 'YYYY-MM-DD', + month: 'YYYY-MM-01', + year: 'YYYY-01-01', +}; + function getAddIntervalQuery(field: string, interval: string): string { const db = getDatabaseType(); @@ -60,18 +68,16 @@ function getDateSQL(field: string, unit: string, timezone?: string): string { if (db === POSTGRESQL) { if (timezone) { - return `date_trunc('${unit}', ${field} at time zone '${timezone}')`; + return `to_char(date_trunc('${unit}', ${field} at time zone '${timezone}'), '${POSTGRESQL_DATE_FORMATS[unit]}')`; } - return `date_trunc('${unit}', ${field})`; + return `to_char(date_trunc('${unit}', ${field}), '${POSTGRESQL_DATE_FORMATS[unit]}')`; } if (db === MYSQL) { if (timezone) { const tz = moment.tz(timezone).format('Z'); - return `date_format(convert_tz(${field},'+00:00','${tz}'), '${MYSQL_DATE_FORMATS[unit]}')`; } - return `date_format(${field}, '${MYSQL_DATE_FORMATS[unit]}')`; } } diff --git a/src/queries/analytics/pageviews/getPageviewStats.ts b/src/queries/analytics/pageviews/getPageviewStats.ts index bf8a0e8f..96e9f1e1 100644 --- a/src/queries/analytics/pageviews/getPageviewStats.ts +++ b/src/queries/analytics/pageviews/getPageviewStats.ts @@ -31,6 +31,7 @@ async function relationalQuery(websiteId: string, filters: QueryFilters) { and event_type = {{eventType}} ${filterQuery} group by 1 + order by 1 `, params, ); diff --git a/src/queries/analytics/sessions/getSessionActivity.ts b/src/queries/analytics/sessions/getSessionActivity.ts index 3bda0d29..1fe8bbd3 100644 --- a/src/queries/analytics/sessions/getSessionActivity.ts +++ b/src/queries/analytics/sessions/getSessionActivity.ts @@ -24,6 +24,7 @@ async function relationalQuery( createdAt: { gte: startDate, lte: endDate }, }, take: 500, + orderBy: { createdAt: 'desc' }, }); } diff --git a/src/queries/analytics/sessions/getSessionStats.ts b/src/queries/analytics/sessions/getSessionStats.ts index ee16e425..8fde94f3 100644 --- a/src/queries/analytics/sessions/getSessionStats.ts +++ b/src/queries/analytics/sessions/getSessionStats.ts @@ -31,6 +31,7 @@ async function relationalQuery(websiteId: string, filters: QueryFilters) { and event_type = {{eventType}} ${filterQuery} group by 1 + order by 1 `, params, );