diff --git a/lib/parsers/binary_parser.js b/lib/parsers/binary_parser.js index ce3c908ee2..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)); + return packet.readDateTimeString( + parseInt(field.decimals, 10), + ' ', + field.columnType + ); } if (field.columnType === Types.TINY) { 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 ); } 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');