From 20b6ddc06b36112035ad876358f30c02699362aa Mon Sep 17 00:00:00 2001 From: YANG QIA <2013xile@gmail.com> Date: Sun, 8 Dec 2024 13:14:44 +0800 Subject: [PATCH] fix(data-vi): issue when formating date with timezone in MySQL (#5829) --- .../src/server/formatter/mysql-formatter.ts | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/packages/plugins/@nocobase/plugin-data-visualization/src/server/formatter/mysql-formatter.ts b/packages/plugins/@nocobase/plugin-data-visualization/src/server/formatter/mysql-formatter.ts index dbe8f31fcd..efe1cde75b 100644 --- a/packages/plugins/@nocobase/plugin-data-visualization/src/server/formatter/mysql-formatter.ts +++ b/packages/plugins/@nocobase/plugin-data-visualization/src/server/formatter/mysql-formatter.ts @@ -8,6 +8,7 @@ */ import { Col, Formatter } from './formatter'; +import moment from 'moment-timezone'; export class MySQLFormatter extends Formatter { convertFormat(format: string) { @@ -21,14 +22,10 @@ export class MySQLFormatter extends Formatter { } formatDate(field: Col, format: string, timezoneOffset?: string) { - const timezone = this.getTimezoneByOffset(timezoneOffset); + const tz = moment.tz(process.env.TZ || 'UTC').format('Z'); format = this.convertFormat(format); - if (timezone) { - return this.sequelize.fn( - 'date_format', - this.sequelize.fn('convert_tz', field, process.env.TZ || 'UTC', timezone), - format, - ); + if (timezoneOffset && tz !== timezoneOffset) { + return this.sequelize.fn('date_format', this.sequelize.fn('convert_tz', field, tz, timezoneOffset), format); } return this.sequelize.fn('date_format', field, format); }