How to include endDate in filter
@kapa.ai How can I include results that fall on the end date when filtering between two dates?
createdAt field is between and , inclusive of both dates.in to correctly filter date ranges:The problem is that it should look something like this:
onChange, it converts the Dayjs objects to ISO 8601 string format, which can then be used with and operators.gtegtegtegtegtelteltelteltelte2024-06-30T21:00:00.000Z2024-07-03T21:00:00.000ZQuery string parameters::
select: *
offset: 0
limit: 10
order: created_at.desc
created_at: gte.2024-06-30T21:00:00.000Z
created_at: lte.2024-07-03T21:00:00.000ZrangePickerFilterMapperrangePickerFilterMapperrangePickerFilterMapperrangePickerFilterMapperrangePickerFilterMapperrangePickerFilterMapperrangePickerFilterMapperfilter = [
{
operator: "and",
value: [
{
field: "createdAt",
operator: "gte",
value: "2024-06-30T21:00:00.000Z",
},
{
field: "createdAt",
operator: "lte",
value: "2024-07-03T21:00:00.000Z",
},
],
},
];import { getDefaultFilter } from "@refinedev/core";
import {
DateField,
FilterDropdown,
rangePickerFilterMapper,
useTable,
} from "@refinedev/antd";
import { Table, DatePicker } from "antd"; export const Posts = () => {
const { tableProps, filters } = useTable({
filters: {
initial: [
{
field: "created_at",
value: ["2022-01-01", "2022-01-31"],
operator: "between",
},
],
},
});
return (
<Table {...tableProps} rowKey="id">
<Table.Column dataIndex="id" title="ID" />
<Table.Column dataIndex="title" title="Title" />
<Table.Column
dataIndex="createdAt"
title="Created At"
filterDropdown={(props) => (
<FilterDropdown
{...props}
mapValue={(selectedKeys, event) => {
return rangePickerFilterMapper(selectedKeys, event);
}}
>
<DatePicker.RangePicker />
</FilterDropdown>
)}
defaultFilteredValue={getDefaultFilter(
"created_at",
filters,
"between",
)}
/>
</Table>
);
};import type {
FilterDropdownProps,
MapValueEvent,
} from "@components/table/components";
import dayjs from "dayjs";
export const rangePickerFilterMapper = (
selectedKeys: FilterDropdownProps["selectedKeys"],
event: MapValueEvent,
) => {
if (!selectedKeys) {
return selectedKeys;
}
if (event === "value") {
return selectedKeys.map((key) => {
if (typeof key === "string") {
return dayjs(key);
}
return key;
});
}
if (event === "onChange") {
if (selectedKeys.every(dayjs.isDayjs)) {
return selectedKeys.map((date: any) => dayjs(date).toISOString());
}
}
return selectedKeys;
};