diff --git a/frontend/src/metabase/querying/filters/components/DatePicker/DatePicker.tsx b/frontend/src/metabase/querying/filters/components/DatePicker/DatePicker.tsx
index a6505ed5160b769001a88e6c414cd4ef32647c40..a4f1dd011fc3716243ee4fe13b86610374dd11a6 100644
--- a/frontend/src/metabase/querying/filters/components/DatePicker/DatePicker.tsx
+++ b/frontend/src/metabase/querying/filters/components/DatePicker/DatePicker.tsx
@@ -6,14 +6,14 @@ import { ExcludeDatePicker } from "./ExcludeDatePicker";
 import { RelativeDatePicker } from "./RelativeDatePicker";
 import { SpecificDatePicker } from "./SpecificDatePicker";
 import {
-  DATE_PICKER_EXTRACTION_UNITS,
   DATE_PICKER_OPERATORS,
   DATE_PICKER_SHORTCUTS,
+  DATE_PICKER_UNITS,
 } from "./constants";
 import type {
-  DatePickerExtractionUnit,
   DatePickerOperator,
   DatePickerShortcut,
+  DatePickerUnit,
   DatePickerValue,
 } from "./types";
 
@@ -21,7 +21,7 @@ interface DatePickerProps {
   value?: DatePickerValue;
   availableOperators?: ReadonlyArray<DatePickerOperator>;
   availableShortcuts?: ReadonlyArray<DatePickerShortcut>;
-  availableUnits?: ReadonlyArray<DatePickerExtractionUnit>;
+  availableUnits?: ReadonlyArray<DatePickerUnit>;
   canUseRelativeOffsets?: boolean;
   backButton?: ReactNode;
   isNew?: boolean;
@@ -32,7 +32,7 @@ export function DatePicker({
   value,
   availableOperators = DATE_PICKER_OPERATORS,
   availableShortcuts = DATE_PICKER_SHORTCUTS,
-  availableUnits = DATE_PICKER_EXTRACTION_UNITS,
+  availableUnits = DATE_PICKER_UNITS,
   canUseRelativeOffsets = false,
   isNew = value == null,
   backButton,
@@ -50,6 +50,7 @@ export function DatePicker({
         <SpecificDatePicker
           value={value?.type === type ? value : undefined}
           availableOperators={availableOperators}
+          availableUnits={availableUnits}
           isNew={isNew}
           onChange={onChange}
           onBack={handleBack}
@@ -59,6 +60,7 @@ export function DatePicker({
       return (
         <RelativeDatePicker
           value={value?.type === type ? value : undefined}
+          availableUnits={availableUnits}
           canUseRelativeOffsets={canUseRelativeOffsets}
           isNew={isNew}
           onChange={onChange}
diff --git a/frontend/src/metabase/querying/filters/components/DatePicker/ExcludeDatePicker/ExcludeDatePicker.tsx b/frontend/src/metabase/querying/filters/components/DatePicker/ExcludeDatePicker/ExcludeDatePicker.tsx
index 63e1bbf44db1f4f643917049852f30212e806012..65642dd607e1cabd2757a872a9652d66d2b7e262 100644
--- a/frontend/src/metabase/querying/filters/components/DatePicker/ExcludeDatePicker/ExcludeDatePicker.tsx
+++ b/frontend/src/metabase/querying/filters/components/DatePicker/ExcludeDatePicker/ExcludeDatePicker.tsx
@@ -16,6 +16,7 @@ import { MIN_WIDTH } from "../constants";
 import type {
   DatePickerExtractionUnit,
   DatePickerOperator,
+  DatePickerUnit,
   ExcludeDatePickerOperator,
   ExcludeDatePickerValue,
 } from "../types";
@@ -33,7 +34,7 @@ import {
 export interface ExcludeDatePickerProps {
   value?: ExcludeDatePickerValue;
   availableOperators: ReadonlyArray<DatePickerOperator>;
-  availableUnits: ReadonlyArray<DatePickerExtractionUnit>;
+  availableUnits: ReadonlyArray<DatePickerUnit>;
   isNew: boolean;
   onChange: (value: ExcludeDatePickerValue) => void;
   onBack: () => void;
@@ -82,7 +83,7 @@ export function ExcludeDatePicker({
 interface ExcludeOptionPickerProps {
   value: ExcludeDatePickerValue | undefined;
   availableOperators: ReadonlyArray<DatePickerOperator>;
-  availableUnits: ReadonlyArray<DatePickerExtractionUnit>;
+  availableUnits: ReadonlyArray<DatePickerUnit>;
   onChange: (value: ExcludeDatePickerValue) => void;
   onSelectUnit: (unit: DatePickerExtractionUnit) => void;
   onBack: () => void;
diff --git a/frontend/src/metabase/querying/filters/components/DatePicker/ExcludeDatePicker/utils.ts b/frontend/src/metabase/querying/filters/components/DatePicker/ExcludeDatePicker/utils.ts
index 1534fc3b39e661c7fe14f4c109999ea95ebb8f47..d49afae68fc31e2c4469a9198b17d0ba08a9e064 100644
--- a/frontend/src/metabase/querying/filters/components/DatePicker/ExcludeDatePicker/utils.ts
+++ b/frontend/src/metabase/querying/filters/components/DatePicker/ExcludeDatePicker/utils.ts
@@ -5,6 +5,7 @@ import _ from "underscore";
 import type {
   DatePickerExtractionUnit,
   DatePickerOperator,
+  DatePickerUnit,
   ExcludeDatePickerOperator,
   ExcludeDatePickerValue,
 } from "../types";
@@ -18,7 +19,7 @@ import type {
 
 export function getExcludeUnitOptions(
   availableOperators: ReadonlyArray<DatePickerOperator>,
-  availableUnits: ReadonlyArray<DatePickerExtractionUnit>,
+  availableUnits: ReadonlyArray<DatePickerUnit>,
 ): ExcludeUnitOption[] {
   if (!availableOperators.includes("!=")) {
     return [];
diff --git a/frontend/src/metabase/querying/filters/components/DatePicker/RelativeDatePicker/CurrentDatePicker/CurrentDatePicker.tsx b/frontend/src/metabase/querying/filters/components/DatePicker/RelativeDatePicker/CurrentDatePicker/CurrentDatePicker.tsx
index 7b88c9127cdf5cdcf7be7164cf994e63559376b9..efa0de08d44a2768642764fb4771a41d936ed168 100644
--- a/frontend/src/metabase/querying/filters/components/DatePicker/RelativeDatePicker/CurrentDatePicker/CurrentDatePicker.tsx
+++ b/frontend/src/metabase/querying/filters/components/DatePicker/RelativeDatePicker/CurrentDatePicker/CurrentDatePicker.tsx
@@ -5,29 +5,37 @@ import * as Lib from "metabase-lib";
 
 import type {
   DatePickerTruncationUnit,
+  DatePickerUnit,
   RelativeDatePickerValue,
 } from "../../types";
 import { formatDateRange } from "../utils";
 
-import { UNIT_GROUPS } from "./constants";
+import { getCurrentValue, getUnitGroups } from "./utils";
 
 interface CurrentDatePickerProps {
-  value: RelativeDatePickerValue;
+  value: RelativeDatePickerValue | undefined;
+  availableUnits: ReadonlyArray<DatePickerUnit>;
   onChange: (value: RelativeDatePickerValue) => void;
 }
 
-export function CurrentDatePicker({ value, onChange }: CurrentDatePickerProps) {
+export function CurrentDatePicker({
+  value,
+  availableUnits,
+  onChange,
+}: CurrentDatePickerProps) {
+  const unitGroups = getUnitGroups(availableUnits);
+
   const getTooltipLabel = (unit: DatePickerTruncationUnit) => {
-    return formatDateRange({ ...value, unit });
+    return formatDateRange(getCurrentValue(unit));
   };
 
   const handleClick = (unit: DatePickerTruncationUnit) => {
-    onChange({ ...value, unit });
+    onChange(getCurrentValue(unit));
   };
 
   return (
     <Stack>
-      {UNIT_GROUPS.map((group, groupIndex) => (
+      {unitGroups.map((group, groupIndex) => (
         <Group key={groupIndex}>
           {group.map(unit => (
             <Tooltip
@@ -35,7 +43,7 @@ export function CurrentDatePicker({ value, onChange }: CurrentDatePickerProps) {
               label={t`Right now, this is ${getTooltipLabel(unit)}`}
             >
               <Button
-                variant={unit === value.unit ? "filled" : "default"}
+                variant={unit === value?.unit ? "filled" : "default"}
                 radius="xl"
                 onClick={() => handleClick(unit)}
               >
diff --git a/frontend/src/metabase/querying/filters/components/DatePicker/RelativeDatePicker/CurrentDatePicker/CurrentDatePicker.unit.spec.tsx b/frontend/src/metabase/querying/filters/components/DatePicker/RelativeDatePicker/CurrentDatePicker/CurrentDatePicker.unit.spec.tsx
index 3d1ef2b7797ab79779b943c49c8131828e97882c..0b295eaa3c7ba5f157774de6274c42b4ec118e27 100644
--- a/frontend/src/metabase/querying/filters/components/DatePicker/RelativeDatePicker/CurrentDatePicker/CurrentDatePicker.unit.spec.tsx
+++ b/frontend/src/metabase/querying/filters/components/DatePicker/RelativeDatePicker/CurrentDatePicker/CurrentDatePicker.unit.spec.tsx
@@ -2,7 +2,8 @@ import _userEvent from "@testing-library/user-event";
 
 import { renderWithProviders, screen } from "__support__/ui";
 
-import type { RelativeDatePickerValue } from "../../types";
+import { DATE_PICKER_UNITS } from "../../constants";
+import type { DatePickerUnit, RelativeDatePickerValue } from "../../types";
 
 import { CurrentDatePicker } from "./CurrentDatePicker";
 
@@ -14,16 +15,26 @@ const DEFAULT_VALUE: RelativeDatePickerValue = {
 
 interface SetupOpts {
   value?: RelativeDatePickerValue;
+  availableUnits?: ReadonlyArray<DatePickerUnit>;
 }
 
 const userEvent = _userEvent.setup({
   advanceTimers: jest.advanceTimersByTime,
 });
 
-function setup({ value = DEFAULT_VALUE }: SetupOpts = {}) {
+function setup({
+  value = DEFAULT_VALUE,
+  availableUnits = DATE_PICKER_UNITS,
+}: SetupOpts = {}) {
   const onChange = jest.fn();
 
-  renderWithProviders(<CurrentDatePicker value={value} onChange={onChange} />);
+  renderWithProviders(
+    <CurrentDatePicker
+      value={value}
+      availableUnits={availableUnits}
+      onChange={onChange}
+    />,
+  );
 
   return { onChange };
 }
diff --git a/frontend/src/metabase/querying/filters/components/DatePicker/RelativeDatePicker/CurrentDatePicker/utils.ts b/frontend/src/metabase/querying/filters/components/DatePicker/RelativeDatePicker/CurrentDatePicker/utils.ts
new file mode 100644
index 0000000000000000000000000000000000000000..74d5242cabede7cae99de4104c1cfabe2724b43e
--- /dev/null
+++ b/frontend/src/metabase/querying/filters/components/DatePicker/RelativeDatePicker/CurrentDatePicker/utils.ts
@@ -0,0 +1,19 @@
+import type {
+  DatePickerTruncationUnit,
+  DatePickerUnit,
+  RelativeDatePickerValue,
+} from "../../types";
+
+import { UNIT_GROUPS } from "./constants";
+
+export function getCurrentValue(
+  unit: DatePickerTruncationUnit,
+): RelativeDatePickerValue {
+  return { type: "relative", value: "current", unit };
+}
+
+export function getUnitGroups(availableUnits: ReadonlyArray<DatePickerUnit>) {
+  return UNIT_GROUPS.map(group =>
+    group.filter(unit => availableUnits.includes(unit)),
+  ).filter(group => group.length > 0);
+}
diff --git a/frontend/src/metabase/querying/filters/components/DatePicker/RelativeDatePicker/DateIntervalPicker/DateIntervalPicker.tsx b/frontend/src/metabase/querying/filters/components/DatePicker/RelativeDatePicker/DateIntervalPicker/DateIntervalPicker.tsx
index dc8cda3e6367f6aa66e1434ee4a2aa7b769812a9..9d2e528b0aa994ac2f8aebf8055678a372d3f8a5 100644
--- a/frontend/src/metabase/querying/filters/components/DatePicker/RelativeDatePicker/DateIntervalPicker/DateIntervalPicker.tsx
+++ b/frontend/src/metabase/querying/filters/components/DatePicker/RelativeDatePicker/DateIntervalPicker/DateIntervalPicker.tsx
@@ -13,6 +13,7 @@ import {
   Tooltip,
 } from "metabase/ui";
 
+import type { DatePickerUnit } from "../../types";
 import { IncludeCurrentSwitch } from "../IncludeCurrentSwitch";
 import type { DateIntervalValue } from "../types";
 import {
@@ -26,6 +27,7 @@ import { setDefaultOffset, setUnit } from "./utils";
 
 interface DateIntervalPickerProps {
   value: DateIntervalValue;
+  availableUnits: ReadonlyArray<DatePickerUnit>;
   isNew: boolean;
   canUseRelativeOffsets: boolean;
   onChange: (value: DateIntervalValue) => void;
@@ -34,13 +36,14 @@ interface DateIntervalPickerProps {
 
 export function DateIntervalPicker({
   value,
+  availableUnits,
   isNew,
   canUseRelativeOffsets,
   onChange,
   onSubmit,
 }: DateIntervalPickerProps) {
   const interval = getInterval(value);
-  const unitOptions = getUnitOptions(value);
+  const unitOptions = getUnitOptions(value, availableUnits);
   const dateRangeText = formatDateRange(value);
 
   const handleIntervalChange = (inputValue: number | "") => {
diff --git a/frontend/src/metabase/querying/filters/components/DatePicker/RelativeDatePicker/DateIntervalPicker/DateIntervalPicker.unit.spec.tsx b/frontend/src/metabase/querying/filters/components/DatePicker/RelativeDatePicker/DateIntervalPicker/DateIntervalPicker.unit.spec.tsx
index 2faf0d0ae821efc984924141e18d68491fdf12c5..36b17988501820d44521b980e0fc9874df76b7b6 100644
--- a/frontend/src/metabase/querying/filters/components/DatePicker/RelativeDatePicker/DateIntervalPicker/DateIntervalPicker.unit.spec.tsx
+++ b/frontend/src/metabase/querying/filters/components/DatePicker/RelativeDatePicker/DateIntervalPicker/DateIntervalPicker.unit.spec.tsx
@@ -2,7 +2,8 @@ import userEvent from "@testing-library/user-event";
 
 import { renderWithProviders, screen } from "__support__/ui";
 
-import type { RelativeIntervalDirection } from "../../types";
+import { DATE_PICKER_UNITS } from "../../constants";
+import type { DatePickerUnit, RelativeIntervalDirection } from "../../types";
 import type { DateIntervalValue } from "../types";
 
 import { DateIntervalPicker } from "./DateIntervalPicker";
@@ -19,12 +20,14 @@ function getDefaultValue(
 
 interface SetupOpts {
   value: DateIntervalValue;
+  availableUnits?: ReadonlyArray<DatePickerUnit>;
   isNew?: boolean;
   canUseRelativeOffsets?: boolean;
 }
 
 function setup({
   value,
+  availableUnits = DATE_PICKER_UNITS,
   isNew = false,
   canUseRelativeOffsets = false,
 }: SetupOpts) {
@@ -34,6 +37,7 @@ function setup({
   renderWithProviders(
     <DateIntervalPicker
       value={value}
+      availableUnits={availableUnits}
       isNew={isNew}
       canUseRelativeOffsets={canUseRelativeOffsets}
       onChange={onChange}
@@ -151,6 +155,17 @@ describe("DateIntervalPicker", () => {
         expect(onSubmit).not.toHaveBeenCalled();
       });
 
+      it("should allow to set only available units", async () => {
+        setup({
+          value: defaultValue,
+          availableUnits: ["day", "month"],
+        });
+        await userEvent.click(screen.getByLabelText("Unit"));
+        expect(screen.getByText("days")).toBeInTheDocument();
+        expect(screen.getByText("months")).toBeInTheDocument();
+        expect(screen.queryByText("years")).not.toBeInTheDocument();
+      });
+
       it("should allow to include the current unit", async () => {
         const { onChange, onSubmit } = setup({
           value: defaultValue,
diff --git a/frontend/src/metabase/querying/filters/components/DatePicker/RelativeDatePicker/DateIntervalPicker/SimpleDateIntervalPicker/SimpleDateIntervalPicker.tsx b/frontend/src/metabase/querying/filters/components/DatePicker/RelativeDatePicker/DateIntervalPicker/SimpleDateIntervalPicker/SimpleDateIntervalPicker.tsx
index 8603e99fa1c4dc71c1d0488572da9502623e31c6..b4468065185881f6bbd137a09bcfab7a59e86233 100644
--- a/frontend/src/metabase/querying/filters/components/DatePicker/RelativeDatePicker/DateIntervalPicker/SimpleDateIntervalPicker/SimpleDateIntervalPicker.tsx
+++ b/frontend/src/metabase/querying/filters/components/DatePicker/RelativeDatePicker/DateIntervalPicker/SimpleDateIntervalPicker/SimpleDateIntervalPicker.tsx
@@ -2,6 +2,7 @@ import { t } from "ttag";
 
 import { Group, NumberInput, Select } from "metabase/ui";
 
+import type { DatePickerUnit } from "../../../types";
 import { IncludeCurrentSwitch } from "../../IncludeCurrentSwitch";
 import type { DateIntervalValue } from "../../types";
 import { getInterval, getUnitOptions, setInterval } from "../../utils";
@@ -9,15 +10,17 @@ import { setUnit } from "../utils";
 
 interface SimpleDateIntervalPickerProps {
   value: DateIntervalValue;
+  availableUnits: ReadonlyArray<DatePickerUnit>;
   onChange: (value: DateIntervalValue) => void;
 }
 
 export function SimpleDateIntervalPicker({
   value,
+  availableUnits,
   onChange,
 }: SimpleDateIntervalPickerProps) {
   const interval = getInterval(value);
-  const unitOptions = getUnitOptions(value);
+  const unitOptions = getUnitOptions(value, availableUnits);
 
   const handleIntervalChange = (inputValue: number | "") => {
     if (inputValue !== "") {
diff --git a/frontend/src/metabase/querying/filters/components/DatePicker/RelativeDatePicker/DateIntervalPicker/SimpleDateIntervalPicker/SimpleDateIntervalPicker.unit.spec.tsx b/frontend/src/metabase/querying/filters/components/DatePicker/RelativeDatePicker/DateIntervalPicker/SimpleDateIntervalPicker/SimpleDateIntervalPicker.unit.spec.tsx
index 457ceaf36a36c6e286d62b02f1dc3b2e03509300..6b160cdd1187dd716321139b5436cc3166eb25a5 100644
--- a/frontend/src/metabase/querying/filters/components/DatePicker/RelativeDatePicker/DateIntervalPicker/SimpleDateIntervalPicker/SimpleDateIntervalPicker.unit.spec.tsx
+++ b/frontend/src/metabase/querying/filters/components/DatePicker/RelativeDatePicker/DateIntervalPicker/SimpleDateIntervalPicker/SimpleDateIntervalPicker.unit.spec.tsx
@@ -1,8 +1,9 @@
 import userEvent from "@testing-library/user-event";
 
 import { renderWithProviders, screen } from "__support__/ui";
-import type { RelativeIntervalDirection } from "metabase/querying/filters/components/DatePicker/types";
 
+import { DATE_PICKER_UNITS } from "../../../constants";
+import type { DatePickerUnit, RelativeIntervalDirection } from "../../../types";
 import type { DateIntervalValue } from "../../types";
 
 import { SimpleDateIntervalPicker } from "./SimpleDateIntervalPicker";
@@ -19,15 +20,20 @@ function getDefaultValue(
 
 interface SetupOpts {
   value: DateIntervalValue;
+  availableUnits?: ReadonlyArray<DatePickerUnit>;
   isNew?: boolean;
   canUseRelativeOffsets?: boolean;
 }
 
-function setup({ value }: SetupOpts) {
+function setup({ value, availableUnits = DATE_PICKER_UNITS }: SetupOpts) {
   const onChange = jest.fn();
 
   renderWithProviders(
-    <SimpleDateIntervalPicker value={value} onChange={onChange} />,
+    <SimpleDateIntervalPicker
+      value={value}
+      availableUnits={availableUnits}
+      onChange={onChange}
+    />,
   );
 
   return { onChange };
diff --git a/frontend/src/metabase/querying/filters/components/DatePicker/RelativeDatePicker/DateOffsetIntervalPicker/DateOffsetIntervalPicker.tsx b/frontend/src/metabase/querying/filters/components/DatePicker/RelativeDatePicker/DateOffsetIntervalPicker/DateOffsetIntervalPicker.tsx
index 06bc1cc091bc0cd284cc32b5751623ad2d6ec89f..87e9c64f64653c4bc79953436722c9cabaaf122d 100644
--- a/frontend/src/metabase/querying/filters/components/DatePicker/RelativeDatePicker/DateOffsetIntervalPicker/DateOffsetIntervalPicker.tsx
+++ b/frontend/src/metabase/querying/filters/components/DatePicker/RelativeDatePicker/DateOffsetIntervalPicker/DateOffsetIntervalPicker.tsx
@@ -11,6 +11,7 @@ import {
   Text,
 } from "metabase/ui";
 
+import type { DatePickerUnit } from "../../types";
 import type { DateIntervalValue, DateOffsetIntervalValue } from "../types";
 import {
   formatDateRange,
@@ -32,6 +33,7 @@ import {
 
 interface DateOffsetIntervalPickerProps {
   value: DateOffsetIntervalValue;
+  availableUnits: ReadonlyArray<DatePickerUnit>;
   isNew: boolean;
   onChange: (value: DateIntervalValue) => void;
   onSubmit: () => void;
@@ -39,14 +41,15 @@ interface DateOffsetIntervalPickerProps {
 
 export function DateOffsetIntervalPicker({
   value,
+  availableUnits,
   isNew,
   onChange,
   onSubmit,
 }: DateOffsetIntervalPickerProps) {
   const interval = getInterval(value);
-  const unitOptions = getUnitOptions(value);
+  const unitOptions = getUnitOptions(value, availableUnits);
   const offsetInterval = getOffsetInterval(value);
-  const offsetUnitOptions = getOffsetUnitOptions(value);
+  const offsetUnitOptions = getOffsetUnitOptions(value, availableUnits);
   const directionText = getDirectionText(value);
   const dateRangeText = formatDateRange(value);
 
diff --git a/frontend/src/metabase/querying/filters/components/DatePicker/RelativeDatePicker/DateOffsetIntervalPicker/DateOffsetIntervalPicker.unit.spec.tsx b/frontend/src/metabase/querying/filters/components/DatePicker/RelativeDatePicker/DateOffsetIntervalPicker/DateOffsetIntervalPicker.unit.spec.tsx
index d49b3a03d16ae2459c5084dc3ca898aca70292ba..35762162b98d98593e5fcd39d1ee3569fb141e06 100644
--- a/frontend/src/metabase/querying/filters/components/DatePicker/RelativeDatePicker/DateOffsetIntervalPicker/DateOffsetIntervalPicker.unit.spec.tsx
+++ b/frontend/src/metabase/querying/filters/components/DatePicker/RelativeDatePicker/DateOffsetIntervalPicker/DateOffsetIntervalPicker.unit.spec.tsx
@@ -2,7 +2,8 @@ import _userEvent from "@testing-library/user-event";
 
 import { renderWithProviders, screen } from "__support__/ui";
 
-import type { RelativeIntervalDirection } from "../../types";
+import { DATE_PICKER_UNITS } from "../../constants";
+import type { DatePickerUnit, RelativeIntervalDirection } from "../../types";
 import type { DateOffsetIntervalValue } from "../types";
 
 import { DateOffsetIntervalPicker } from "./DateOffsetIntervalPicker";
@@ -25,16 +26,22 @@ const userEvent = _userEvent.setup({
 
 interface SetupOpts {
   value: DateOffsetIntervalValue;
+  availableUnits?: ReadonlyArray<DatePickerUnit>;
   isNew?: boolean;
 }
 
-function setup({ value, isNew = false }: SetupOpts) {
+function setup({
+  value,
+  availableUnits = DATE_PICKER_UNITS,
+  isNew = false,
+}: SetupOpts) {
   const onChange = jest.fn();
   const onSubmit = jest.fn();
 
   renderWithProviders(
     <DateOffsetIntervalPicker
       value={value}
+      availableUnits={availableUnits}
       isNew={isNew}
       onChange={onChange}
       onSubmit={onSubmit}
@@ -152,6 +159,24 @@ describe("DateOffsetIntervalPicker", () => {
         expect(onSubmit).not.toHaveBeenCalled();
       });
 
+      it("should allow to set only available units", async () => {
+        setup({
+          value: defaultValue,
+          availableUnits: ["day", "year"],
+        });
+
+        await userEvent.click(screen.getByLabelText("Unit"));
+        expect(screen.getByText("days")).toBeInTheDocument();
+        expect(screen.getByText("years")).toBeInTheDocument();
+        expect(screen.queryByText("months")).not.toBeInTheDocument();
+
+        const suffix = direction === "last" ? "ago" : "from now";
+        await userEvent.click(screen.getByLabelText("Starting from unit"));
+        expect(screen.getByText(`days ${suffix}`)).toBeInTheDocument();
+        expect(screen.getByText(`years ${suffix}`)).toBeInTheDocument();
+        expect(screen.queryByText(`months ${suffix}`)).not.toBeInTheDocument();
+      });
+
       it("should change the offset interval", async () => {
         const { onChange, onSubmit } = setup({
           value: defaultValue,
diff --git a/frontend/src/metabase/querying/filters/components/DatePicker/RelativeDatePicker/DateOffsetIntervalPicker/utils.ts b/frontend/src/metabase/querying/filters/components/DatePicker/RelativeDatePicker/DateOffsetIntervalPicker/utils.ts
index cda9f0c43b200f7781a9082d9a9d8c4291847c77..e755b1108247e32fd0a42c369b8ece03b0f5195e 100644
--- a/frontend/src/metabase/querying/filters/components/DatePicker/RelativeDatePicker/DateOffsetIntervalPicker/utils.ts
+++ b/frontend/src/metabase/querying/filters/components/DatePicker/RelativeDatePicker/DateOffsetIntervalPicker/utils.ts
@@ -2,13 +2,13 @@ import { t } from "ttag";
 
 import * as Lib from "metabase-lib";
 
-import { DATE_PICKER_TRUNCATION_UNITS } from "../../constants";
 import type {
   DatePickerTruncationUnit,
+  DatePickerUnit,
   RelativeIntervalDirection,
 } from "../../types";
 import type { DateIntervalValue, DateOffsetIntervalValue } from "../types";
-import { getDirection } from "../utils";
+import { getAvailableTruncationUnits, getDirection } from "../utils";
 
 export function getDirectionText(value: DateOffsetIntervalValue): string {
   const direction = getDirection(value);
@@ -51,16 +51,20 @@ export function removeOffset(
   return { ...value, offsetValue: undefined, offsetUnit: undefined };
 }
 
-export function getOffsetUnitOptions(value: DateOffsetIntervalValue) {
+export function getOffsetUnitOptions(
+  value: DateOffsetIntervalValue,
+  availableUnits: ReadonlyArray<DatePickerUnit>,
+) {
+  const truncationUnits = getAvailableTruncationUnits(availableUnits);
   const direction = getDirection(value);
-  const unitIndex = DATE_PICKER_TRUNCATION_UNITS.indexOf(value.unit);
+  const unitIndex = truncationUnits.indexOf(value.unit);
 
-  return DATE_PICKER_TRUNCATION_UNITS.filter(
-    (_, index) => index >= unitIndex,
-  ).map(unit => ({
-    value: unit,
-    label: getOffsetUnitText(unit, direction, value.offsetValue),
-  }));
+  return truncationUnits
+    .filter((_, index) => index >= unitIndex)
+    .map(unit => ({
+      value: unit,
+      label: getOffsetUnitText(unit, direction, value.offsetValue),
+    }));
 }
 
 function getOffsetUnitText(
diff --git a/frontend/src/metabase/querying/filters/components/DatePicker/RelativeDatePicker/RelativeDatePicker.tsx b/frontend/src/metabase/querying/filters/components/DatePicker/RelativeDatePicker/RelativeDatePicker.tsx
index eedc38528be0cd2deddcb736e17cdbdc79c0945b..f8af0f8c52e04adf6a8b3ef3a16802f0e8a933c9 100644
--- a/frontend/src/metabase/querying/filters/components/DatePicker/RelativeDatePicker/RelativeDatePicker.tsx
+++ b/frontend/src/metabase/querying/filters/components/DatePicker/RelativeDatePicker/RelativeDatePicker.tsx
@@ -2,7 +2,7 @@ import { useState } from "react";
 
 import { Box, Divider, Flex, PopoverBackButton, Tabs } from "metabase/ui";
 
-import type { RelativeDatePickerValue } from "../types";
+import type { DatePickerUnit, RelativeDatePickerValue } from "../types";
 
 import { CurrentDatePicker } from "./CurrentDatePicker";
 import { DateIntervalPicker } from "./DateIntervalPicker";
@@ -18,6 +18,7 @@ import {
 
 interface RelativeDatePickerProps {
   value: RelativeDatePickerValue | undefined;
+  availableUnits: ReadonlyArray<DatePickerUnit>;
   canUseRelativeOffsets: boolean;
   isNew: boolean;
   onChange: (value: RelativeDatePickerValue) => void;
@@ -26,12 +27,15 @@ interface RelativeDatePickerProps {
 
 export function RelativeDatePicker({
   value: initialValue,
+  availableUnits,
   canUseRelativeOffsets,
   isNew,
   onChange,
   onBack,
 }: RelativeDatePickerProps) {
-  const [value, setValue] = useState(initialValue ?? DEFAULT_VALUE);
+  const [value, setValue] = useState<RelativeDatePickerValue | undefined>(
+    initialValue ?? DEFAULT_VALUE,
+  );
   const direction = getDirection(value);
 
   const handleTabChange = (tabValue: string | null) => {
@@ -42,7 +46,9 @@ export function RelativeDatePicker({
   };
 
   const handleSubmit = () => {
-    onChange(value);
+    if (value != null) {
+      onChange(value);
+    }
   };
 
   return (
@@ -63,6 +69,7 @@ export function RelativeDatePicker({
           {isOffsetIntervalValue(value) ? (
             <DateOffsetIntervalPicker
               value={value}
+              availableUnits={availableUnits}
               isNew={isNew}
               onChange={setValue}
               onSubmit={handleSubmit}
@@ -70,6 +77,7 @@ export function RelativeDatePicker({
           ) : isIntervalValue(value) ? (
             <DateIntervalPicker
               value={value}
+              availableUnits={availableUnits}
               isNew={isNew}
               canUseRelativeOffsets={canUseRelativeOffsets}
               onChange={setValue}
@@ -77,7 +85,11 @@ export function RelativeDatePicker({
             />
           ) : (
             <Box p="md">
-              <CurrentDatePicker value={value} onChange={onChange} />
+              <CurrentDatePicker
+                value={value}
+                availableUnits={availableUnits}
+                onChange={onChange}
+              />
             </Box>
           )}
         </Tabs.Panel>
diff --git a/frontend/src/metabase/querying/filters/components/DatePicker/RelativeDatePicker/RelativeDatePicker.unit.spec.tsx b/frontend/src/metabase/querying/filters/components/DatePicker/RelativeDatePicker/RelativeDatePicker.unit.spec.tsx
index 8f98d6629defc24872f902e24db2144be8fdb5d4..a0577a7f163cd2c4900f85d06923dd4292736645 100644
--- a/frontend/src/metabase/querying/filters/components/DatePicker/RelativeDatePicker/RelativeDatePicker.unit.spec.tsx
+++ b/frontend/src/metabase/querying/filters/components/DatePicker/RelativeDatePicker/RelativeDatePicker.unit.spec.tsx
@@ -2,7 +2,8 @@ import userEvent from "@testing-library/user-event";
 
 import { renderWithProviders, screen } from "__support__/ui";
 
-import type { RelativeDatePickerValue } from "../types";
+import { DATE_PICKER_UNITS } from "../constants";
+import type { DatePickerUnit, RelativeDatePickerValue } from "../types";
 
 import { RelativeDatePicker } from "./RelativeDatePicker";
 
@@ -11,12 +12,14 @@ const TAB_CASES = TABS.flatMap(fromTab => TABS.map(toTab => [fromTab, toTab]));
 
 interface SetupOpts {
   value?: RelativeDatePickerValue;
+  availableUnits?: ReadonlyArray<DatePickerUnit>;
   canUseRelativeOffsets?: boolean;
   isNew?: boolean;
 }
 
 function setup({
   value,
+  availableUnits = DATE_PICKER_UNITS,
   canUseRelativeOffsets = false,
   isNew = false,
 }: SetupOpts = {}) {
@@ -26,6 +29,7 @@ function setup({
   renderWithProviders(
     <RelativeDatePicker
       value={value}
+      availableUnits={availableUnits}
       canUseRelativeOffsets={canUseRelativeOffsets}
       isNew={isNew}
       onChange={onChange}
diff --git a/frontend/src/metabase/querying/filters/components/DatePicker/RelativeDatePicker/utils.ts b/frontend/src/metabase/querying/filters/components/DatePicker/RelativeDatePicker/utils.ts
index 7e7d245e90ce33553c74438667b68675cc6dd6e0..082e08c8b0104f033032507e7c5926f0ec3cc501 100644
--- a/frontend/src/metabase/querying/filters/components/DatePicker/RelativeDatePicker/utils.ts
+++ b/frontend/src/metabase/querying/filters/components/DatePicker/RelativeDatePicker/utils.ts
@@ -3,6 +3,7 @@ import * as Lib from "metabase-lib";
 import { DATE_PICKER_TRUNCATION_UNITS } from "../constants";
 import type {
   DatePickerTruncationUnit,
+  DatePickerUnit,
   DatePickerValue,
   RelativeDatePickerValue,
   RelativeIntervalDirection,
@@ -12,48 +13,51 @@ import { DEFAULT_VALUE } from "./constants";
 import type { DateIntervalValue, DateOffsetIntervalValue } from "./types";
 
 export function isRelativeValue(
-  value?: DatePickerValue,
+  value: DatePickerValue | undefined,
 ): value is RelativeDatePickerValue {
-  return value?.type === "relative";
+  return value != null && value.type === "relative";
 }
 
 export function isIntervalValue(
-  value: RelativeDatePickerValue,
+  value: RelativeDatePickerValue | undefined,
 ): value is DateIntervalValue {
-  return value.value !== "current";
+  return value != null && value.value !== "current";
 }
 
 export function isOffsetIntervalValue(
-  value: RelativeDatePickerValue,
+  value: RelativeDatePickerValue | undefined,
 ): value is DateOffsetIntervalValue {
   return (
+    value != null &&
     isIntervalValue(value) &&
     value.offsetValue != null &&
     value.offsetUnit != null
   );
 }
 
-export function getDirectionDefaultValue(direction: RelativeIntervalDirection) {
-  return setDirectionAndCoerceUnit(DEFAULT_VALUE, direction);
-}
-
 export function getDirection(
-  value: RelativeDatePickerValue,
+  value: RelativeDatePickerValue | undefined,
 ): RelativeIntervalDirection {
-  if (value.value === "current") {
+  if (value == null || value.value === "current") {
     return "current";
   } else {
     return value.value < 0 ? "last" : "next";
   }
 }
 
+export function getDirectionDefaultValue(direction: RelativeIntervalDirection) {
+  return setDirectionAndCoerceUnit(DEFAULT_VALUE, direction);
+}
+
 export function setDirection(
-  value: RelativeDatePickerValue,
+  value: RelativeDatePickerValue = DEFAULT_VALUE,
   direction: RelativeIntervalDirection,
-  fallbackUnit: DatePickerTruncationUnit = "hour",
-): RelativeDatePickerValue {
+  fallbackUnit?: DatePickerTruncationUnit,
+): RelativeDatePickerValue | undefined {
   if (direction === "current") {
-    return { type: "relative", value: "current", unit: fallbackUnit };
+    return fallbackUnit
+      ? { type: "relative", value: "current", unit: fallbackUnit }
+      : undefined;
   }
 
   const sign = direction === "last" ? -1 : 1;
@@ -103,10 +107,22 @@ export function setInterval(
   };
 }
 
-export function getUnitOptions(value: DateIntervalValue) {
+export function getAvailableTruncationUnits(
+  availableUnits: ReadonlyArray<DatePickerUnit>,
+) {
+  return DATE_PICKER_TRUNCATION_UNITS.filter(unit =>
+    availableUnits.includes(unit),
+  );
+}
+
+export function getUnitOptions(
+  value: DateIntervalValue,
+  availableUnits: ReadonlyArray<DatePickerUnit>,
+) {
+  const truncationUnits = getAvailableTruncationUnits(availableUnits);
   const interval = getInterval(value);
 
-  return DATE_PICKER_TRUNCATION_UNITS.map(unit => ({
+  return truncationUnits.map(unit => ({
     value: unit,
     label: Lib.describeTemporalUnit(unit, interval).toLowerCase(),
   }));
diff --git a/frontend/src/metabase/querying/filters/components/DatePicker/RelativeDatePicker/utils.unit.spec.ts b/frontend/src/metabase/querying/filters/components/DatePicker/RelativeDatePicker/utils.unit.spec.ts
index 00385847f65597c3b346899954a9709bc80ca571..5389b4f6fd4fea56aca31dfdf5d4c29350f1559d 100644
--- a/frontend/src/metabase/querying/filters/components/DatePicker/RelativeDatePicker/utils.unit.spec.ts
+++ b/frontend/src/metabase/querying/filters/components/DatePicker/RelativeDatePicker/utils.unit.spec.ts
@@ -15,17 +15,13 @@ describe("setDirection", () => {
       "month",
       "quarter",
       "year",
-    ])('should fallback to "hour" for "%s" unit', unit => {
+    ])('should remove the value for "%s" unit', unit => {
       const value: RelativeDatePickerValue = {
         type: "relative",
         value: 1,
         unit,
       };
-      expect(setDirection(value, "current")).toEqual({
-        type: "relative",
-        value: "current",
-        unit: "hour",
-      });
+      expect(setDirection(value, "current")).toBeUndefined();
     });
   });
 
diff --git a/frontend/src/metabase/querying/filters/components/DatePicker/SimpleDatePicker/SimpleDatePicker.tsx b/frontend/src/metabase/querying/filters/components/DatePicker/SimpleDatePicker/SimpleDatePicker.tsx
index 467866b6489ea5e6413d277da2f8cec146fdb4a5..71a73000803cdf6da8a5edea750b01e72e3b5ba3 100644
--- a/frontend/src/metabase/querying/filters/components/DatePicker/SimpleDatePicker/SimpleDatePicker.tsx
+++ b/frontend/src/metabase/querying/filters/components/DatePicker/SimpleDatePicker/SimpleDatePicker.tsx
@@ -11,16 +11,22 @@ import { isIntervalValue, isRelativeValue } from "../RelativeDatePicker/utils";
 import { SimpleSpecificDatePicker } from "../SpecificDatePicker/SimpleSpecificDatePicker";
 import { isSpecificValue } from "../SpecificDatePicker/utils";
 import { DATE_PICKER_OPERATORS } from "../constants";
-import type { DatePickerOperator, DatePickerValue } from "../types";
+import type {
+  DatePickerOperator,
+  DatePickerUnit,
+  DatePickerValue,
+} from "../types";
 
 interface SimpleDatePickerProps {
   value?: DatePickerValue;
   availableOperators?: ReadonlyArray<DatePickerOperator>;
+  availableUnits: ReadonlyArray<DatePickerUnit>;
   onChange: (value: DatePickerValue | undefined) => void;
 }
 
 export function SimpleDatePicker({
   value: initialValue,
+  availableUnits,
   availableOperators = DATE_PICKER_OPERATORS,
   onChange,
 }: SimpleDatePickerProps) {
@@ -40,10 +46,18 @@ export function SimpleDatePicker({
           onChange={setValue}
         />
         {isRelativeValue(value) && isIntervalValue(value) && (
-          <SimpleDateIntervalPicker value={value} onChange={setValue} />
+          <SimpleDateIntervalPicker
+            value={value}
+            availableUnits={availableUnits}
+            onChange={setValue}
+          />
         )}
         {isRelativeValue(value) && !isIntervalValue(value) && (
-          <CurrentDatePicker value={value} onChange={setValue} />
+          <CurrentDatePicker
+            value={value}
+            availableUnits={availableUnits}
+            onChange={setValue}
+          />
         )}
         {isSpecificValue(value) && (
           <SimpleSpecificDatePicker value={value} onChange={setValue} />
diff --git a/frontend/src/metabase/querying/filters/components/DatePicker/SimpleDatePicker/SimpleDatePicker.unit.spec.tsx b/frontend/src/metabase/querying/filters/components/DatePicker/SimpleDatePicker/SimpleDatePicker.unit.spec.tsx
index 790b1d015f6d1d809c599ff5643f3c9b127fe0a7..78604a4ca6dbd80b220a974061ad2572449da19e 100644
--- a/frontend/src/metabase/querying/filters/components/DatePicker/SimpleDatePicker/SimpleDatePicker.unit.spec.tsx
+++ b/frontend/src/metabase/querying/filters/components/DatePicker/SimpleDatePicker/SimpleDatePicker.unit.spec.tsx
@@ -2,19 +2,25 @@ import userEvent from "@testing-library/user-event";
 
 import { renderWithProviders, screen } from "__support__/ui";
 
-import { DATE_PICKER_OPERATORS } from "../constants";
-import type { DatePickerOperator, DatePickerValue } from "../types";
+import { DATE_PICKER_OPERATORS, DATE_PICKER_UNITS } from "../constants";
+import type {
+  DatePickerOperator,
+  DatePickerUnit,
+  DatePickerValue,
+} from "../types";
 
 import { SimpleDatePicker } from "./SimpleDatePicker";
 
 interface SetupOpts {
   value?: DatePickerValue;
   availableOperators?: ReadonlyArray<DatePickerOperator>;
+  availableUnits?: ReadonlyArray<DatePickerUnit>;
 }
 
 function setup({
   value,
   availableOperators = DATE_PICKER_OPERATORS,
+  availableUnits = DATE_PICKER_UNITS,
 }: SetupOpts = {}) {
   const onChange = jest.fn();
 
@@ -22,6 +28,7 @@ function setup({
     <SimpleDatePicker
       value={value}
       availableOperators={availableOperators}
+      availableUnits={availableUnits}
       onChange={onChange}
     />,
   );
diff --git a/frontend/src/metabase/querying/filters/components/DatePicker/SpecificDatePicker/DateRangePicker/DateRangePicker.tsx b/frontend/src/metabase/querying/filters/components/DatePicker/SpecificDatePicker/DateRangePicker/DateRangePicker.tsx
index 06c0cbf3f0e7d7f27263ef132cac00345373c27e..b73706180c481092d2d633a48e17c7d10bf345bd 100644
--- a/frontend/src/metabase/querying/filters/components/DatePicker/SpecificDatePicker/DateRangePicker/DateRangePicker.tsx
+++ b/frontend/src/metabase/querying/filters/components/DatePicker/SpecificDatePicker/DateRangePicker/DateRangePicker.tsx
@@ -12,6 +12,7 @@ import type { DateRangePickerValue } from "./types";
 export interface DateRangePickerProps {
   value: DateRangePickerValue;
   isNew: boolean;
+  hasTimeToggle: boolean;
   onChange: (value: DateRangePickerValue) => void;
   onSubmit: () => void;
 }
@@ -19,6 +20,7 @@ export interface DateRangePickerProps {
 export function DateRangePicker({
   value: { dateRange, hasTime },
   isNew,
+  hasTimeToggle,
   onChange,
   onSubmit,
 }: DateRangePickerProps) {
@@ -50,8 +52,10 @@ export function DateRangePicker({
         />
       </Box>
       <Divider />
-      <Group p="sm" position="apart">
-        <TimeToggle hasTime={hasTime} onClick={handleTimeToggle} />
+      <Group p="sm" position={hasTimeToggle ? "apart" : "right"}>
+        {hasTimeToggle && (
+          <TimeToggle hasTime={hasTime} onClick={handleTimeToggle} />
+        )}
         <Button variant="filled" type="submit">
           {isNew ? t`Add filter` : t`Update filter`}
         </Button>
diff --git a/frontend/src/metabase/querying/filters/components/DatePicker/SpecificDatePicker/DateRangePicker/DateRangePicker.unit.spec.tsx b/frontend/src/metabase/querying/filters/components/DatePicker/SpecificDatePicker/DateRangePicker/DateRangePicker.unit.spec.tsx
index 4000df28fa73930c685ab2a908f1f2fba10990cc..71647e7575b275c23b248460931a4f8a07da384a 100644
--- a/frontend/src/metabase/querying/filters/components/DatePicker/SpecificDatePicker/DateRangePicker/DateRangePicker.unit.spec.tsx
+++ b/frontend/src/metabase/querying/filters/components/DatePicker/SpecificDatePicker/DateRangePicker/DateRangePicker.unit.spec.tsx
@@ -14,6 +14,7 @@ const END_DATE_TIME = new Date(2020, 1, 9, 20, 30);
 interface SetupOpts {
   value?: DateRangePickerValue;
   isNew?: boolean;
+  hasTimeToggle?: boolean;
 }
 
 const userEvent = _userEvent.setup({
@@ -23,6 +24,7 @@ const userEvent = _userEvent.setup({
 function setup({
   value = { dateRange: [START_DATE, END_DATE], hasTime: false },
   isNew = false,
+  hasTimeToggle = false,
 }: SetupOpts = {}) {
   const onChange = jest.fn();
   const onSubmit = jest.fn();
@@ -31,6 +33,7 @@ function setup({
     <DateRangePicker
       value={value}
       isNew={isNew}
+      hasTimeToggle={hasTimeToggle}
       onChange={onChange}
       onSubmit={onSubmit}
     />,
@@ -65,6 +68,7 @@ describe("SingleDatePicker", () => {
         dateRange: [START_DATE_TIME, END_DATE_TIME],
         hasTime: true,
       },
+      hasTimeToggle: true,
     });
 
     const calendars = screen.getAllByRole("table");
@@ -100,6 +104,7 @@ describe("SingleDatePicker", () => {
         dateRange: [START_DATE_TIME, END_DATE],
         hasTime: true,
       },
+      hasTimeToggle: true,
     });
 
     const input = screen.getByLabelText("Start date");
@@ -135,6 +140,7 @@ describe("SingleDatePicker", () => {
         dateRange: [START_DATE, END_DATE_TIME],
         hasTime: true,
       },
+      hasTimeToggle: true,
     });
 
     const input = screen.getByLabelText("End date");
@@ -149,7 +155,9 @@ describe("SingleDatePicker", () => {
   });
 
   it("should be able to add time", async () => {
-    const { onChange, onSubmit } = setup();
+    const { onChange, onSubmit } = setup({
+      hasTimeToggle: true,
+    });
     expect(screen.queryByLabelText("Start time")).not.toBeInTheDocument();
     expect(screen.queryByLabelText("End time")).not.toBeInTheDocument();
 
@@ -167,6 +175,7 @@ describe("SingleDatePicker", () => {
         dateRange: [START_DATE_TIME, END_DATE_TIME],
         hasTime: true,
       },
+      hasTimeToggle: true,
     });
 
     const input = screen.getByLabelText("Start time");
@@ -186,6 +195,7 @@ describe("SingleDatePicker", () => {
         dateRange: [START_DATE_TIME, END_DATE_TIME],
         hasTime: true,
       },
+      hasTimeToggle: true,
     });
 
     const input = screen.getByLabelText("End time");
@@ -205,6 +215,7 @@ describe("SingleDatePicker", () => {
         dateRange: [START_DATE_TIME, END_DATE_TIME],
         hasTime: true,
       },
+      hasTimeToggle: true,
     });
 
     await userEvent.click(screen.getByText("Remove time"));
@@ -215,4 +226,12 @@ describe("SingleDatePicker", () => {
     });
     expect(onSubmit).not.toHaveBeenCalled();
   });
+
+  it("should not allow to add time when the time toggle is disabled", () => {
+    setup({
+      value: { dateRange: [START_DATE_TIME, END_DATE_TIME], hasTime: false },
+      hasTimeToggle: false,
+    });
+    expect(screen.queryByText("Add time")).not.toBeInTheDocument();
+  });
 });
diff --git a/frontend/src/metabase/querying/filters/components/DatePicker/SpecificDatePicker/SingleDatePicker/SingleDatePicker.tsx b/frontend/src/metabase/querying/filters/components/DatePicker/SpecificDatePicker/SingleDatePicker/SingleDatePicker.tsx
index 3a716831a377f1a57a6134f16dce782407737134..b19491e2db9ac67ea571ef0b4dbb401ec01a6fbf 100644
--- a/frontend/src/metabase/querying/filters/components/DatePicker/SpecificDatePicker/SingleDatePicker/SingleDatePicker.tsx
+++ b/frontend/src/metabase/querying/filters/components/DatePicker/SpecificDatePicker/SingleDatePicker/SingleDatePicker.tsx
@@ -12,6 +12,7 @@ import type { SingleDatePickerValue } from "./types";
 interface SingleDatePickerProps {
   value: SingleDatePickerValue;
   isNew: boolean;
+  hasTimeToggle: boolean;
   onChange: (value: SingleDatePickerValue) => void;
   onSubmit: () => void;
 }
@@ -19,6 +20,7 @@ interface SingleDatePickerProps {
 export function SingleDatePicker({
   value: { date, hasTime },
   isNew,
+  hasTimeToggle,
   onChange,
   onSubmit,
 }: SingleDatePickerProps) {
@@ -45,8 +47,10 @@ export function SingleDatePicker({
         />
       </Box>
       <Divider />
-      <Group p="sm" position="apart">
-        <TimeToggle hasTime={hasTime} onClick={handleTimeToggle} />
+      <Group p="sm" position={hasTimeToggle ? "apart" : "right"}>
+        {hasTimeToggle && (
+          <TimeToggle hasTime={hasTime} onClick={handleTimeToggle} />
+        )}
         <Button variant="filled" type="submit">
           {isNew ? t`Add filter` : t`Update filter`}
         </Button>
diff --git a/frontend/src/metabase/querying/filters/components/DatePicker/SpecificDatePicker/SingleDatePicker/SingleDatePicker.unit.spec.tsx b/frontend/src/metabase/querying/filters/components/DatePicker/SpecificDatePicker/SingleDatePicker/SingleDatePicker.unit.spec.tsx
index bc4b5beb997ca5cac31565b2c5984953b9e0999b..57b97144965480c8e65c10ab452b1e752c797d31 100644
--- a/frontend/src/metabase/querying/filters/components/DatePicker/SpecificDatePicker/SingleDatePicker/SingleDatePicker.unit.spec.tsx
+++ b/frontend/src/metabase/querying/filters/components/DatePicker/SpecificDatePicker/SingleDatePicker/SingleDatePicker.unit.spec.tsx
@@ -11,6 +11,7 @@ const DATE_TIME = new Date(2020, 0, 10, 10, 20);
 interface SetupOpts {
   value?: SingleDatePickerValue;
   isNew?: boolean;
+  hasTimeToggle?: boolean;
 }
 
 const userEvent = _userEvent.setup({
@@ -20,6 +21,7 @@ const userEvent = _userEvent.setup({
 function setup({
   value = { date: DATE, hasTime: false },
   isNew = false,
+  hasTimeToggle = false,
 }: SetupOpts = {}) {
   const onChange = jest.fn();
   const onSubmit = jest.fn();
@@ -28,6 +30,7 @@ function setup({
     <SingleDatePicker
       value={value}
       isNew={isNew}
+      hasTimeToggle={hasTimeToggle}
       onChange={onChange}
       onSubmit={onSubmit}
     />,
@@ -57,6 +60,7 @@ describe("SingleDatePicker", () => {
   it("should be able to set the date via the calendar when there is time", async () => {
     const { onChange, onSubmit } = setup({
       value: { date: DATE_TIME, hasTime: true },
+      hasTimeToggle: true,
     });
 
     await userEvent.click(screen.getByText("12"));
@@ -88,6 +92,7 @@ describe("SingleDatePicker", () => {
   it("should be able to set the date via the input when there is time", async () => {
     const { onChange, onSubmit } = setup({
       value: { date: DATE_TIME, hasTime: true },
+      hasTimeToggle: true,
     });
 
     const input = screen.getByLabelText("Date");
@@ -103,7 +108,9 @@ describe("SingleDatePicker", () => {
   });
 
   it("should be able to add time", async () => {
-    const { onChange, onSubmit } = setup();
+    const { onChange, onSubmit } = setup({
+      hasTimeToggle: true,
+    });
 
     await userEvent.click(screen.getByText("Add time"));
 
@@ -114,6 +121,7 @@ describe("SingleDatePicker", () => {
   it("should be able to update the time", async () => {
     const { onChange, onSubmit } = setup({
       value: { date: DATE_TIME, hasTime: true },
+      hasTimeToggle: true,
     });
 
     const input = screen.getByLabelText("Time");
@@ -130,6 +138,7 @@ describe("SingleDatePicker", () => {
   it("should be able to remove time", async () => {
     const { onChange, onSubmit } = setup({
       value: { date: DATE_TIME, hasTime: true },
+      hasTimeToggle: true,
     });
 
     await userEvent.click(screen.getByText("Remove time"));
@@ -140,4 +149,12 @@ describe("SingleDatePicker", () => {
     });
     expect(onSubmit).not.toHaveBeenCalled();
   });
+
+  it("should not allow to add time when the time toggle is disabled", () => {
+    setup({
+      value: { date: DATE, hasTime: false },
+      hasTimeToggle: false,
+    });
+    expect(screen.queryByText("Add time")).not.toBeInTheDocument();
+  });
 });
diff --git a/frontend/src/metabase/querying/filters/components/DatePicker/SpecificDatePicker/SpecificDatePicker.tsx b/frontend/src/metabase/querying/filters/components/DatePicker/SpecificDatePicker/SpecificDatePicker.tsx
index 21117db7d52976f1efd286fb390167b1ad85b41d..f94baa9491efc94176197891106dda0876ff886c 100644
--- a/frontend/src/metabase/querying/filters/components/DatePicker/SpecificDatePicker/SpecificDatePicker.tsx
+++ b/frontend/src/metabase/querying/filters/components/DatePicker/SpecificDatePicker/SpecificDatePicker.tsx
@@ -2,7 +2,11 @@ import { useMemo, useState } from "react";
 
 import { Divider, Flex, PopoverBackButton, Tabs } from "metabase/ui";
 
-import type { DatePickerOperator, SpecificDatePickerValue } from "../types";
+import type {
+  DatePickerOperator,
+  DatePickerUnit,
+  SpecificDatePickerValue,
+} from "../types";
 
 import { DateRangePicker, type DateRangePickerValue } from "./DateRangePicker";
 import {
@@ -11,6 +15,7 @@ import {
 } from "./SingleDatePicker";
 import { TabList } from "./SpecificDatePicker.styled";
 import {
+  canSetTime,
   coerceValue,
   getDate,
   getDefaultValue,
@@ -24,6 +29,7 @@ import {
 interface SpecificDatePickerProps {
   value?: SpecificDatePickerValue;
   availableOperators: ReadonlyArray<DatePickerOperator>;
+  availableUnits: ReadonlyArray<DatePickerUnit>;
   isNew: boolean;
   onChange: (value: SpecificDatePickerValue) => void;
   onBack: () => void;
@@ -32,15 +38,14 @@ interface SpecificDatePickerProps {
 export function SpecificDatePicker({
   value: initialValue,
   availableOperators,
+  availableUnits,
   isNew,
   onChange,
   onBack,
 }: SpecificDatePickerProps) {
-  const tabs = useMemo(() => {
-    return getTabs(availableOperators);
-  }, [availableOperators]);
-
+  const tabs = useMemo(() => getTabs(availableOperators), [availableOperators]);
   const [value, setValue] = useState(() => initialValue ?? getDefaultValue());
+  const hasTimeToggle = canSetTime(value, availableUnits);
 
   const handleTabChange = (tabValue: string | null) => {
     const tab = tabs.find(tab => tab.operator === tabValue);
@@ -83,6 +88,7 @@ export function SpecificDatePicker({
             <DateRangePicker
               value={{ dateRange: value.values, hasTime: value.hasTime }}
               isNew={isNew}
+              hasTimeToggle={hasTimeToggle}
               onChange={handleDateRangeChange}
               onSubmit={handleSubmit}
             />
@@ -90,6 +96,7 @@ export function SpecificDatePicker({
             <SingleDatePicker
               value={{ date: getDate(value), hasTime: value.hasTime }}
               isNew={isNew}
+              hasTimeToggle={hasTimeToggle}
               onChange={handleDateChange}
               onSubmit={handleSubmit}
             />
diff --git a/frontend/src/metabase/querying/filters/components/DatePicker/SpecificDatePicker/SpecificDatePicker.unit.spec.tsx b/frontend/src/metabase/querying/filters/components/DatePicker/SpecificDatePicker/SpecificDatePicker.unit.spec.tsx
index 573eb2754a81b9ec713239d93a2abb88e0ced4b7..f71e676908a11c631c4851ce8bfe54c52732ecd4 100644
--- a/frontend/src/metabase/querying/filters/components/DatePicker/SpecificDatePicker/SpecificDatePicker.unit.spec.tsx
+++ b/frontend/src/metabase/querying/filters/components/DatePicker/SpecificDatePicker/SpecificDatePicker.unit.spec.tsx
@@ -2,14 +2,19 @@ import _userEvent from "@testing-library/user-event";
 
 import { renderWithProviders, screen, within } from "__support__/ui";
 
-import { DATE_PICKER_OPERATORS } from "../constants";
-import type { DatePickerOperator, SpecificDatePickerValue } from "../types";
+import { DATE_PICKER_OPERATORS, DATE_PICKER_UNITS } from "../constants";
+import type {
+  DatePickerOperator,
+  DatePickerUnit,
+  SpecificDatePickerValue,
+} from "../types";
 
 import { SpecificDatePicker } from "./SpecificDatePicker";
 
 interface SetupOpts {
   value?: SpecificDatePickerValue;
   availableOperators?: ReadonlyArray<DatePickerOperator>;
+  availableUnits?: ReadonlyArray<DatePickerUnit>;
   isNew?: boolean;
 }
 
@@ -20,6 +25,7 @@ const userEvent = _userEvent.setup({
 function setup({
   value,
   availableOperators = DATE_PICKER_OPERATORS,
+  availableUnits = DATE_PICKER_UNITS,
   isNew = false,
 }: SetupOpts = {}) {
   const onChange = jest.fn();
@@ -29,6 +35,7 @@ function setup({
     <SpecificDatePicker
       value={value}
       availableOperators={availableOperators}
+      availableUnits={availableUnits}
       isNew={isNew}
       onChange={onChange}
       onBack={onBack}
@@ -125,4 +132,33 @@ describe("SpecificDatePicker", () => {
       hasTime: false,
     });
   });
+
+  it("should not allow to add time when time units are not supported", async () => {
+    setup({ availableUnits: ["day", "month"] });
+    await userEvent.click(screen.getByText("On"));
+    expect(screen.queryByText("Add time")).not.toBeInTheDocument();
+  });
+
+  it("should allow to remove time even when time units are not supported", async () => {
+    const { onChange } = setup({
+      value: {
+        type: "specific",
+        operator: "=",
+        values: [new Date(2020, 0, 1, 10, 20)],
+        hasTime: true,
+      },
+      availableUnits: ["day", "month"],
+    });
+
+    await userEvent.click(screen.getByText("Remove time"));
+    await userEvent.click(screen.getByText("Update filter"));
+
+    expect(onChange).toHaveBeenCalledWith({
+      type: "specific",
+      operator: "=",
+      values: [new Date(2020, 0, 1)],
+      hasTime: false,
+    });
+    expect(screen.queryByText("Add time")).not.toBeInTheDocument();
+  });
 });
diff --git a/frontend/src/metabase/querying/filters/components/DatePicker/SpecificDatePicker/utils.ts b/frontend/src/metabase/querying/filters/components/DatePicker/SpecificDatePicker/utils.ts
index 086e85ed319b5d2c299813daac1f7405f9c9d065..4301da1fdb2659a446de68e4259652875f5145a0 100644
--- a/frontend/src/metabase/querying/filters/components/DatePicker/SpecificDatePicker/utils.ts
+++ b/frontend/src/metabase/querying/filters/components/DatePicker/SpecificDatePicker/utils.ts
@@ -2,6 +2,7 @@ import dayjs from "dayjs";
 
 import type {
   DatePickerOperator,
+  DatePickerUnit,
   DatePickerValue,
   SpecificDatePickerOperator,
   SpecificDatePickerValue,
@@ -52,6 +53,13 @@ export function getOperatorDefaultValue(
   }
 }
 
+export function canSetTime(
+  value: SpecificDatePickerValue,
+  availableUnits: ReadonlyArray<DatePickerUnit>,
+) {
+  return value.hasTime || availableUnits.includes("minute");
+}
+
 export function setOperator(
   value: SpecificDatePickerValue,
   operator: SpecificDatePickerOperator,
diff --git a/frontend/src/metabase/querying/filters/components/DatePicker/constants.ts b/frontend/src/metabase/querying/filters/components/DatePicker/constants.ts
index d28d477ff9ab3521a1412e051b689d33f2aa8ca5..070ded24d21cff41f911cd6712c5e84d88ced809 100644
--- a/frontend/src/metabase/querying/filters/components/DatePicker/constants.ts
+++ b/frontend/src/metabase/querying/filters/components/DatePicker/constants.ts
@@ -45,3 +45,8 @@ export const DATE_PICKER_EXTRACTION_UNITS = [
   "month-of-year",
   "quarter-of-year",
 ] as const;
+
+export const DATE_PICKER_UNITS = [
+  ...DATE_PICKER_TRUNCATION_UNITS,
+  ...DATE_PICKER_EXTRACTION_UNITS,
+] as const;
diff --git a/frontend/src/metabase/querying/filters/components/DatePicker/types.ts b/frontend/src/metabase/querying/filters/components/DatePicker/types.ts
index 488ae489fb478c067ea6eca66d66e0efbfadb999..d7b7afb52cf975ee4dc93dfd1467f5495978fcb5 100644
--- a/frontend/src/metabase/querying/filters/components/DatePicker/types.ts
+++ b/frontend/src/metabase/querying/filters/components/DatePicker/types.ts
@@ -18,6 +18,10 @@ export type ExcludeDatePickerOperator =
 
 export type DatePickerShortcut = (typeof DATE_PICKER_SHORTCUTS)[number];
 
+export type DatePickerUnit =
+  | DatePickerExtractionUnit
+  | DatePickerTruncationUnit;
+
 export type DatePickerExtractionUnit =
   (typeof DATE_PICKER_EXTRACTION_UNITS)[number];
 
diff --git a/frontend/src/metabase/querying/filters/components/DatePicker/utils.ts b/frontend/src/metabase/querying/filters/components/DatePicker/utils.ts
index 9d3d07d09e07ae3e1bb7ba38d53e158e52ad3b5a..998859e8d05a6c780c60f85c93fdba705b2f1ef0 100644
--- a/frontend/src/metabase/querying/filters/components/DatePicker/utils.ts
+++ b/frontend/src/metabase/querying/filters/components/DatePicker/utils.ts
@@ -7,6 +7,7 @@ import type {
   DatePickerExtractionUnit,
   DatePickerOperator,
   DatePickerTruncationUnit,
+  DatePickerUnit,
 } from "./types";
 
 export function isDatePickerOperator(
@@ -16,11 +17,8 @@ export function isDatePickerOperator(
   return operators.includes(operator);
 }
 
-export function isDatePickerExtractionUnit(
-  unit: string,
-): unit is DatePickerExtractionUnit {
-  const units: ReadonlyArray<string> = DATE_PICKER_EXTRACTION_UNITS;
-  return units.includes(unit);
+export function isDatePickerUnit(unit: string): unit is DatePickerUnit {
+  return isDatePickerTruncationUnit(unit) || isDatePickerExtractionUnit(unit);
 }
 
 export function isDatePickerTruncationUnit(
@@ -29,3 +27,10 @@ export function isDatePickerTruncationUnit(
   const units: ReadonlyArray<string> = DATE_PICKER_TRUNCATION_UNITS;
   return units.includes(unit);
 }
+
+export function isDatePickerExtractionUnit(
+  unit: string,
+): unit is DatePickerExtractionUnit {
+  const units: ReadonlyArray<string> = DATE_PICKER_EXTRACTION_UNITS;
+  return units.includes(unit);
+}
diff --git a/frontend/src/metabase/querying/filters/components/FilterModal/DateFilterEditor/DateFilterEditor.tsx b/frontend/src/metabase/querying/filters/components/FilterModal/DateFilterEditor/DateFilterEditor.tsx
index 68a7b93dcc0fa40dc21d692282141d384d335b0a..46609e7eab8731a60b3da20ec536896f40dbb75f 100644
--- a/frontend/src/metabase/querying/filters/components/FilterModal/DateFilterEditor/DateFilterEditor.tsx
+++ b/frontend/src/metabase/querying/filters/components/FilterModal/DateFilterEditor/DateFilterEditor.tsx
@@ -9,8 +9,8 @@ import { Button, Flex, Grid, Icon, Popover } from "metabase/ui";
 
 import {
   DatePicker,
-  type DatePickerExtractionUnit,
   type DatePickerOperator,
+  type DatePickerUnit,
   type DatePickerValue,
   type ShortcutOption,
 } from "../../DatePicker";
@@ -103,7 +103,7 @@ interface DateFilterPopoverProps {
   title: string | undefined;
   value: DatePickerValue | undefined;
   availableOperators: ReadonlyArray<DatePickerOperator>;
-  availableUnits: ReadonlyArray<DatePickerExtractionUnit>;
+  availableUnits: ReadonlyArray<DatePickerUnit>;
   isExpanded: boolean;
   onChange: (value: DatePickerValue | undefined) => void;
 }
diff --git a/frontend/src/metabase/querying/filters/components/FilterModal/DateFilterEditor/DateFilterEditor.unit.spec.tsx b/frontend/src/metabase/querying/filters/components/FilterModal/DateFilterEditor/DateFilterEditor.unit.spec.tsx
index c144b1f2063a36d8e0f9b37ccef8660c5d23511e..b182aa8b447e29c3a6f5bfd1131c6f10836370da 100644
--- a/frontend/src/metabase/querying/filters/components/FilterModal/DateFilterEditor/DateFilterEditor.unit.spec.tsx
+++ b/frontend/src/metabase/querying/filters/components/FilterModal/DateFilterEditor/DateFilterEditor.unit.spec.tsx
@@ -46,162 +46,184 @@ describe("DateFilterEditor", () => {
   const findColumn = columnFinder(defaultQuery, availableColumns);
   const column = findColumn("ORDERS", "CREATED_AT");
 
-  describe("new filter", () => {
-    it("should add a relative date filter from a shortcut", async () => {
-      const { getNextFilterName } = setup({
-        query: defaultQuery,
-        stageIndex,
-        column,
-      });
+  it("should add a relative date filter from a shortcut", async () => {
+    const { getNextFilterName } = setup({
+      query: defaultQuery,
+      stageIndex,
+      column,
+    });
 
-      await userEvent.click(screen.getByText("Last month"));
+    await userEvent.click(screen.getByText("Last month"));
 
-      expect(getNextFilterName()).toBe("Created At is in the previous month");
-    });
+    expect(getNextFilterName()).toBe("Created At is in the previous month");
+  });
 
-    it("should remove a relative date filter from a shortcut", async () => {
-      const { query, filter } = createQueryWithFilter(
-        defaultQuery,
-        stageIndex,
-        Lib.relativeDateFilterClause({
-          column,
-          value: "current",
-          bucket: "day",
-          offsetValue: null,
-          offsetBucket: null,
-          options: {},
-        }),
-      );
-      const { getNextFilterName } = setup({
-        query,
-        stageIndex,
+  it("should remove a relative date filter from a shortcut", async () => {
+    const { query, filter } = createQueryWithFilter(
+      defaultQuery,
+      stageIndex,
+      Lib.relativeDateFilterClause({
         column,
-        filter,
-      });
+        value: "current",
+        bucket: "day",
+        offsetValue: null,
+        offsetBucket: null,
+        options: {},
+      }),
+    );
+    const { getNextFilterName } = setup({
+      query,
+      stageIndex,
+      column,
+      filter,
+    });
+
+    const button = screen.getByRole("button", { name: "Today" });
+    expect(button).toHaveAttribute("aria-selected", "true");
 
-      const button = screen.getByRole("button", { name: "Today" });
-      expect(button).toHaveAttribute("aria-selected", "true");
+    await userEvent.click(button);
+    expect(getNextFilterName()).toBeNull();
+  });
 
-      await userEvent.click(button);
-      expect(getNextFilterName()).toBeNull();
+  it("should add a relative date filter", async () => {
+    const { getNextFilterName } = setup({
+      query: defaultQuery,
+      stageIndex,
+      column,
     });
 
-    it("should add a relative date filter", async () => {
-      const { getNextFilterName } = setup({
-        query: defaultQuery,
-        stageIndex,
-        column,
-      });
+    await userEvent.click(screen.getByLabelText("More options"));
+    await userEvent.click(await screen.findByText("Last 30 days"));
 
-      await userEvent.click(screen.getByLabelText("More options"));
-      await userEvent.click(await screen.findByText("Last 30 days"));
+    expect(getNextFilterName()).toBe("Created At is in the previous 30 days");
+  });
 
-      expect(getNextFilterName()).toBe("Created At is in the previous 30 days");
+  it("should remove a relative date filter", async () => {
+    const { query, filter } = createQueryWithFilter(
+      defaultQuery,
+      stageIndex,
+      Lib.relativeDateFilterClause({
+        column,
+        value: -30,
+        bucket: "day",
+        offsetValue: null,
+        offsetBucket: null,
+        options: {},
+      }),
+    );
+    const { getNextFilterName } = setup({
+      query,
+      stageIndex,
+      column,
+      filter,
     });
+    expect(screen.getByText("Previous 30 Days")).toBeInTheDocument();
 
-    it("should remove a relative date filter", async () => {
-      const { query, filter } = createQueryWithFilter(
-        defaultQuery,
-        stageIndex,
-        Lib.relativeDateFilterClause({
-          column,
-          value: -30,
-          bucket: "day",
-          offsetValue: null,
-          offsetBucket: null,
-          options: {},
-        }),
-      );
-      const { getNextFilterName } = setup({
-        query,
-        stageIndex,
-        column,
-        filter,
-      });
-      expect(screen.getByText("Previous 30 Days")).toBeInTheDocument();
+    await userEvent.click(screen.getByLabelText("Clear"));
+    expect(getNextFilterName()).toBe(null);
+  });
 
-      await userEvent.click(screen.getByLabelText("Clear"));
-      expect(getNextFilterName()).toBe(null);
+  it("should add a specific date filter", async () => {
+    const { getNextFilterName } = setup({
+      query: defaultQuery,
+      stageIndex,
+      column,
     });
 
-    it("should add a specific date filter", async () => {
-      const { getNextFilterName } = setup({
-        query: defaultQuery,
-        stageIndex,
-        column,
-      });
+    await userEvent.click(screen.getByLabelText("More options"));
+    await userEvent.click(await screen.findByText("Specific dates…"));
+    await userEvent.click(screen.getByText("After"));
+    await userEvent.clear(screen.getByLabelText("Date"));
+    await userEvent.type(screen.getByLabelText("Date"), "Feb 15, 2020");
+    await userEvent.click(screen.getByText("Add filter"));
 
-      await userEvent.click(screen.getByLabelText("More options"));
-      await userEvent.click(await screen.findByText("Specific dates…"));
-      await userEvent.click(screen.getByText("After"));
-      await userEvent.clear(screen.getByLabelText("Date"));
-      await userEvent.type(screen.getByLabelText("Date"), "Feb 15, 2020");
-      await userEvent.click(screen.getByText("Add filter"));
+    expect(getNextFilterName()).toBe("Created At is after Feb 15, 2020");
+  });
 
-      expect(getNextFilterName()).toBe("Created At is after Feb 15, 2020");
+  it("should remove a specific date filter", async () => {
+    const { query, filter } = createQueryWithFilter(
+      defaultQuery,
+      stageIndex,
+      Lib.specificDateFilterClause(defaultQuery, stageIndex, {
+        operator: "=",
+        column,
+        values: [new Date(2020, 1, 15)],
+        hasTime: false,
+      }),
+    );
+    const { getNextFilterName } = setup({
+      query,
+      stageIndex,
+      column,
+      filter,
     });
+    expect(screen.getByText("Feb 15, 2020")).toBeInTheDocument();
 
-    it("should remove a specific date filter", async () => {
-      const { query, filter } = createQueryWithFilter(
-        defaultQuery,
-        stageIndex,
-        Lib.specificDateFilterClause(defaultQuery, stageIndex, {
-          operator: "=",
-          column,
-          values: [new Date(2020, 1, 15)],
-          hasTime: false,
-        }),
-      );
-      const { getNextFilterName } = setup({
-        query,
-        stageIndex,
-        column,
-        filter,
-      });
-      expect(screen.getByText("Feb 15, 2020")).toBeInTheDocument();
+    await userEvent.click(screen.getByLabelText("Clear"));
+    expect(getNextFilterName()).toBe(null);
+  });
 
-      await userEvent.click(screen.getByLabelText("Clear"));
-      expect(getNextFilterName()).toBe(null);
+  it("should add an exclude date filter", async () => {
+    const { getNextFilterName } = setup({
+      query: defaultQuery,
+      stageIndex,
+      column,
     });
 
-    it("should add an exclude date filter", async () => {
-      const { getNextFilterName } = setup({
-        query: defaultQuery,
-        stageIndex,
-        column,
-      });
+    await userEvent.click(screen.getByLabelText("More options"));
+    await userEvent.click(await screen.findByText("Exclude…"));
+    await userEvent.click(screen.getByText("Hours of the day…"));
+    await userEvent.click(screen.getByText("5 PM"));
+    await userEvent.click(screen.getByText("Add filter"));
 
-      await userEvent.click(screen.getByLabelText("More options"));
-      await userEvent.click(await screen.findByText("Exclude…"));
-      await userEvent.click(screen.getByText("Hours of the day…"));
-      await userEvent.click(screen.getByText("5 PM"));
-      await userEvent.click(screen.getByText("Add filter"));
+    expect(getNextFilterName()).toBe("Created At excludes the hour of 5 PM");
+  });
 
-      expect(getNextFilterName()).toBe("Created At excludes the hour of 5 PM");
+  it("should remove an exclude date filter", async () => {
+    const { query, filter } = createQueryWithFilter(
+      defaultQuery,
+      stageIndex,
+      Lib.excludeDateFilterClause(defaultQuery, stageIndex, {
+        operator: "!=",
+        column,
+        values: [17],
+        bucket: "hour-of-day",
+      }),
+    );
+    const { getNextFilterName } = setup({
+      query,
+      stageIndex,
+      column,
+      filter,
     });
+    expect(screen.getByText("Excludes 5 PM")).toBeInTheDocument();
 
-    it("should remove an exclude date filter", async () => {
-      const { query, filter } = createQueryWithFilter(
-        defaultQuery,
-        stageIndex,
-        Lib.excludeDateFilterClause(defaultQuery, stageIndex, {
-          operator: "!=",
-          column,
-          values: [17],
-          bucket: "hour-of-day",
-        }),
-      );
-      const { getNextFilterName } = setup({
-        query,
-        stageIndex,
-        column,
-        filter,
-      });
-      expect(screen.getByText("Excludes 5 PM")).toBeInTheDocument();
+    await userEvent.click(screen.getByLabelText("Clear"));
+    expect(getNextFilterName()).toBe(null);
+  });
 
-      await userEvent.click(screen.getByLabelText("Clear"));
-      expect(getNextFilterName()).toBe(null);
+  it("should not allow to set time for a date only column", async () => {
+    setup({
+      query: defaultQuery,
+      stageIndex,
+      column: findColumn("PEOPLE", "BIRTH_DATE"),
     });
+
+    await userEvent.click(screen.getByLabelText("More options"));
+    await userEvent.click(screen.getByText("Specific dates…"));
+    await userEvent.click(screen.getByText("On"));
+    expect(screen.queryByText("Add time")).not.toBeInTheDocument();
+
+    await userEvent.click(screen.getByLabelText("Back"));
+    await userEvent.click(screen.getByText("Relative dates…"));
+    await userEvent.click(screen.getByDisplayValue("days"));
+    expect(screen.getByText("days")).toBeInTheDocument();
+    expect(screen.queryByText("hours")).not.toBeInTheDocument();
+
+    await userEvent.click(screen.getByLabelText("Back"));
+    await userEvent.click(screen.getByText("Exclude…"));
+    expect(screen.getByText("Days of the week…")).toBeInTheDocument();
+    expect(screen.queryByText("Hours of the day…")).not.toBeInTheDocument();
   });
 });
 
diff --git a/frontend/src/metabase/querying/filters/components/FilterPicker/DateFilterPicker/DateFilterPicker.unit.spec.tsx b/frontend/src/metabase/querying/filters/components/FilterPicker/DateFilterPicker/DateFilterPicker.unit.spec.tsx
index 8e412a41b2d87ac8d4a88d7c059eeab1e6ccd21c..dd821eb14b957de40e382daccbfb58b6b3943440 100644
--- a/frontend/src/metabase/querying/filters/components/FilterPicker/DateFilterPicker/DateFilterPicker.unit.spec.tsx
+++ b/frontend/src/metabase/querying/filters/components/FilterPicker/DateFilterPicker/DateFilterPicker.unit.spec.tsx
@@ -3,6 +3,7 @@ import userEvent from "@testing-library/user-event";
 import { renderWithProviders, screen } from "__support__/ui";
 import { checkNotNull } from "metabase/lib/types";
 import * as Lib from "metabase-lib";
+import { columnFinder } from "metabase-lib/test-helpers";
 
 import {
   createQuery,
@@ -72,6 +73,10 @@ function setup({ query, column, filter, isNew = false }: SetupOpts) {
 
 describe("DateFilterPicker", () => {
   const initialQuery = createQuery();
+  const findColumn = columnFinder(
+    initialQuery,
+    Lib.filterableColumns(initialQuery, -1),
+  );
   const column = findDateTimeColumn(initialQuery);
 
   it("should add a filter via shortcut", async () => {
@@ -221,4 +226,27 @@ describe("DateFilterPicker", () => {
       bucket: "day-of-week",
     });
   });
+
+  it("should not allow to set time for a date only column", async () => {
+    setup({
+      query: initialQuery,
+      column: findColumn("PEOPLE", "BIRTH_DATE"),
+      isNew: true,
+    });
+
+    await userEvent.click(screen.getByText("Specific dates…"));
+    await userEvent.click(screen.getByText("On"));
+    expect(screen.queryByText("Add time")).not.toBeInTheDocument();
+
+    await userEvent.click(screen.getByLabelText("Back"));
+    await userEvent.click(screen.getByText("Relative dates…"));
+    await userEvent.click(screen.getByDisplayValue("days"));
+    expect(screen.getByText("days")).toBeInTheDocument();
+    expect(screen.queryByText("hours")).not.toBeInTheDocument();
+
+    await userEvent.click(screen.getByLabelText("Back"));
+    await userEvent.click(screen.getByText("Exclude…"));
+    expect(screen.getByText("Days of the week…")).toBeInTheDocument();
+    expect(screen.queryByText("Hours of the day…")).not.toBeInTheDocument();
+  });
 });
diff --git a/frontend/src/metabase/querying/filters/components/FilterPicker/DateFilterPicker/SimpleDateFilterPicker/SimpleDateFilterPicker.tsx b/frontend/src/metabase/querying/filters/components/FilterPicker/DateFilterPicker/SimpleDateFilterPicker/SimpleDateFilterPicker.tsx
index 2d50ca03af8cde43577983b2c59ec12fdac3d31b..ef3aad4444d832da99e4233c277c690e6fde7d23 100644
--- a/frontend/src/metabase/querying/filters/components/FilterPicker/DateFilterPicker/SimpleDateFilterPicker/SimpleDateFilterPicker.tsx
+++ b/frontend/src/metabase/querying/filters/components/FilterPicker/DateFilterPicker/SimpleDateFilterPicker/SimpleDateFilterPicker.tsx
@@ -18,12 +18,13 @@ export function SimpleDateFilterPicker({
   filter,
   onChange,
 }: SimpleDateFilterPickerProps) {
-  const { value, availableOperators, getFilterClause } = useDateFilter({
-    query,
-    stageIndex,
-    column,
-    filter,
-  });
+  const { value, availableOperators, availableUnits, getFilterClause } =
+    useDateFilter({
+      query,
+      stageIndex,
+      column,
+      filter,
+    });
 
   const handleChange = (value: DatePickerValue | undefined) => {
     if (value) {
@@ -38,6 +39,7 @@ export function SimpleDateFilterPicker({
       <SimpleDatePicker
         value={value}
         availableOperators={availableOperators}
+        availableUnits={availableUnits}
         onChange={handleChange}
       />
     </div>
diff --git a/frontend/src/metabase/querying/filters/hooks/use-date-filter/utils.ts b/frontend/src/metabase/querying/filters/hooks/use-date-filter/utils.ts
index 88ace7090399c62caf55ba5aa32ddf26e92a8601..20e7e0c1d9ba9033a42907de2816739f36719020 100644
--- a/frontend/src/metabase/querying/filters/hooks/use-date-filter/utils.ts
+++ b/frontend/src/metabase/querying/filters/hooks/use-date-filter/utils.ts
@@ -1,14 +1,14 @@
 import * as Lib from "metabase-lib";
 
 import {
-  type DatePickerExtractionUnit,
   type DatePickerOperator,
+  type DatePickerUnit,
   type DatePickerValue,
   type ExcludeDatePickerValue,
   type RelativeDatePickerValue,
   type SpecificDatePickerValue,
-  isDatePickerExtractionUnit,
   isDatePickerOperator,
+  isDatePickerUnit,
 } from "../../components/DatePicker";
 
 export function getPickerValue(
@@ -163,8 +163,8 @@ export function getPickerUnits(
   query: Lib.Query,
   stageIndex: number,
   column: Lib.ColumnMetadata,
-): DatePickerExtractionUnit[] {
+): DatePickerUnit[] {
   return Lib.availableTemporalBuckets(query, stageIndex, column)
     .map(operator => Lib.displayInfo(query, stageIndex, operator).shortName)
-    .filter(isDatePickerExtractionUnit);
+    .filter(isDatePickerUnit);
 }