From 41f06aba512602d760fe2f092358e9da4eaa0ef0 Mon Sep 17 00:00:00 2001 From: steveetm Date: Wed, 9 Jul 2025 15:34:42 +0200 Subject: [PATCH 1/4] fix: pass columnType to readDateTimeString See issue: https://github.com/sidorares/node-mysql2/issues/3699 --- lib/parsers/binary_parser.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/parsers/binary_parser.js b/lib/parsers/binary_parser.js index ce3c908ee2..3f8f350bcb 100644 --- a/lib/parsers/binary_parser.js +++ b/lib/parsers/binary_parser.js @@ -111,7 +111,7 @@ function compile(fields, options, config) { field.columnType ) ) { - return packet.readDateTimeString(parseInt(field.decimals, 10)); + return packet.readDateTimeString(parseInt(field.decimals, 10), ' ', field.columnType); } if (field.columnType === Types.TINY) { From c8feb349978bd06f59644cac02c2bf1f3f27d844 Mon Sep 17 00:00:00 2001 From: steveetm Date: Wed, 9 Jul 2025 20:51:00 +0200 Subject: [PATCH 2/4] fix: pass columnType to readDateTimeString re-ran lint --- lib/parsers/binary_parser.js | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/lib/parsers/binary_parser.js b/lib/parsers/binary_parser.js index 3f8f350bcb..b1872b60b1 100644 --- a/lib/parsers/binary_parser.js +++ b/lib/parsers/binary_parser.js @@ -111,7 +111,11 @@ function compile(fields, options, config) { field.columnType ) ) { - return packet.readDateTimeString(parseInt(field.decimals, 10), ' ', field.columnType); + return packet.readDateTimeString( + parseInt(field.decimals, 10), + ' ', + field.columnType + ); } if (field.columnType === Types.TINY) { From c23d86e77cbc502a16e1ebd827a47c545d2cdb2d Mon Sep 17 00:00:00 2001 From: steveetm Date: Wed, 9 Jul 2025 22:49:14 +0200 Subject: [PATCH 3/4] fix: pass columnType to readDateTimeString New test added for DATETIME parsing --- .../parsers/typecast-field-datetime.test.mjs | 37 +++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 test/esm/integration/parsers/typecast-field-datetime.test.mjs diff --git a/test/esm/integration/parsers/typecast-field-datetime.test.mjs b/test/esm/integration/parsers/typecast-field-datetime.test.mjs new file mode 100644 index 0000000000..19bb184714 --- /dev/null +++ b/test/esm/integration/parsers/typecast-field-datetime.test.mjs @@ -0,0 +1,37 @@ +import { describe, assert } from 'poku'; +import { createRequire } from 'node:module'; + +const require = createRequire(import.meta.url); +const { + createConnection, + describeOptions, +} = require('../../../common.test.cjs'); + +const conn = createConnection({ + typeCast: (field) => field.string(), +}).promise(); + +describe('typeCast field.datetime', describeOptions); + +const query = {}; +const execute = {}; + +await conn.query('CREATE TEMPORARY TABLE `tmp_date` (`datetime` DATETIME)'); + +await conn.query('INSERT INTO `tmp_date` (`datetime`) VALUES (CURRENT_DATE())'); + +{ + const [date] = await conn.execute('SELECT datetime from tmp_date'); + + execute.date = date[0].datetime; +} + +{ + const [date] = await conn.query('SELECT datetime from tmp_date'); + + query.date = date[0].datetime; +} + +await conn.end(); + +assert.equal(execute.date, query.date, 'DATETIME'); From d40c649275776cbeff8c587017fe698d54779140 Mon Sep 17 00:00:00 2001 From: steveetm Date: Thu, 10 Jul 2025 15:10:11 +0200 Subject: [PATCH 4/4] fix: pass columnType to readDateTimeString Also fix static_binary_parser.js --- lib/parsers/static_binary_parser.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/lib/parsers/static_binary_parser.js b/lib/parsers/static_binary_parser.js index b83cb8646c..8a92878644 100644 --- a/lib/parsers/static_binary_parser.js +++ b/lib/parsers/static_binary_parser.js @@ -146,7 +146,9 @@ function getBinaryParser(fields, _options, config) { ].includes(field.columnType) ) { return packet.readDateTimeString( - parseInt(field.decimals, 10) + parseInt(field.decimals, 10), + ' ', + field.columnType ); }