Merge pull request #451 from jaimeferj/bugfix/parseDatesOnSort

Fixes issue #441: Dates were not parsed on sorting
This commit is contained in:
Elian Doran 2024-10-10 23:31:47 +03:00 committed by GitHub
commit 0ec3232c81
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -68,8 +68,16 @@ class OrderByAndLimitExp extends Expression {
return larger; return larger;
} }
// if both are dates, then parse them for dates comparison
if (typeof valA === "string" && this.isDate(valA) &&
typeof valB === "string" && this.isDate(valB)) {
valA = new Date(valA);
valB = new Date(valB);
}
// if both are numbers, then parse them for numerical comparison // if both are numbers, then parse them for numerical comparison
if (typeof valA === "string" && this.isNumber(valA) && else if (typeof valA === "string" && this.isNumber(valA) &&
typeof valB === "string" && this.isNumber(valB)) { typeof valB === "string" && this.isNumber(valB)) {
valA = parseFloat(valA); valA = parseFloat(valA);
valB = parseFloat(valB); valB = parseFloat(valB);
@ -99,6 +107,10 @@ class OrderByAndLimitExp extends Expression {
return noteSet; return noteSet;
} }
isDate(date: number | string) {
return (new Date(date) !== "Invalid Date") && !isNaN(new Date(date));
}
isNumber(x: number | string) { isNumber(x: number | string) {
if (typeof x === 'number') { if (typeof x === 'number') {
return true; return true;