{
  "$schema": "/products/haybarn/functions/api/v1/function.schema.json",
  "schemaVersion": 1,
  "name": "last_day",
  "schema": "main",
  "slug": "last_day",
  "description": "Returns the last day of the month",
  "category": "dates",
  "kinds": [
    "scalar"
  ],
  "aliasOf": [],
  "snapshot": {
    "schemaVersion": 1,
    "id": "duckdb-1.3.2",
    "engine": "duckdb",
    "label": "DuckDB 1.3.2",
    "engineVersion": "v1.3.2",
    "sourceId": "0b83e5d2f6",
    "source": "https://github.com/duckdb/duckdb/releases/tag/v1.3.2",
    "binarySha256": "9a2ae2a4d5dbd07a5b0cb30c502d65014825d34924c681eb3faa7647e7cd2b6f",
    "capturedAt": "2026-09-05T18:37:33.818Z",
    "requestedExtensions": [
      "core_functions",
      "icu",
      "json",
      "parquet"
    ],
    "loadedExtensions": [
      {
        "extension_name": "autocomplete",
        "extension_version": "v1.3.2",
        "installed_from": ""
      },
      {
        "extension_name": "core_functions",
        "extension_version": "v1.3.2",
        "installed_from": ""
      },
      {
        "extension_name": "icu",
        "extension_version": "v1.3.2",
        "installed_from": ""
      },
      {
        "extension_name": "json",
        "extension_version": "v1.3.2",
        "installed_from": ""
      },
      {
        "extension_name": "parquet",
        "extension_version": "v1.3.2",
        "installed_from": ""
      },
      {
        "extension_name": "shell",
        "extension_version": "v1.3.2",
        "installed_from": ""
      }
    ],
    "scope": "Built-in functions in the main schema, with the requested extensions loaded. Catalog visibility is not a guarantee of browser support."
  },
  "links": {
    "html": "/products/haybarn/functions/releases/duckdb-1.3.2/last_day/",
    "markdown": "/products/haybarn/functions/releases/duckdb-1.3.2/last_day/index.md",
    "json": "/products/haybarn/functions/api/v1/duckdb-1.3.2/functions/last_day.json"
  },
  "interpretation": [
    "Choose a snapshot matching the target engine and build. The default is captured from the published Haybarn WASM package used by the browser playground. Historical native snapshots are also available.",
    "Availability is an observation in the recorded build and extension profile, not a guarantee of support in every installation or in WASM.",
    "Types and descriptions are declarations from duckdb_functions(). Binding can specialize result types. Null means not supplied by the catalog; do not invent defaults, optionality, argument mode, or table output columns.",
    "Raw parameter arrays preserve catalog order for scalar/aggregate/macro functions. Raw table arguments are alphabetical. Use callingConvention for engine-confirmed positional order and named arguments; null modes are unrecorded. Named does not mean optional. Macro defaults and special named variadic behavior are not supplied by duckdb_functions().",
    "Catalog examples are source material and may require data or extensions. runnableExamples contains separately verified SQL for the pinned WASM package; sample-data adaptations and guide examples are labeled separately.",
    "Guide annotations and recipes are separate editorial content. The browser runner always uses Haybarn WASM 1.5.5-rc3, independently of the documentation snapshot.",
    "All URLs beginning with / are relative to the origin hosting this document. Exports require no JavaScript, cookies, API key, or browser engine."
  ],
  "overloads": [
    {
      "id": "overload-6ffadfe49a6b2701",
      "url": "/products/haybarn/functions/releases/duckdb-1.3.2/last_day/#overload-6ffadfe49a6b2701",
      "signature": "last_day(ts: DATE) → DATE",
      "parameterOrder": "catalog-order",
      "callingConvention": {
        "source": null,
        "parameters": [
          {
            "name": "ts",
            "type": "DATE",
            "mode": null,
            "position": null
          }
        ],
        "positional": null,
        "named": null,
        "variadic": null,
        "evidence": null
      },
      "syntax": {
        "kind": "function",
        "operator": null
      },
      "catalog": {
        "schema_name": "main",
        "function_name": "last_day",
        "function_type": "scalar",
        "description": "Returns the last day of the month",
        "comment": null,
        "return_type": "DATE",
        "parameters": [
          "ts"
        ],
        "parameter_types": [
          "DATE"
        ],
        "varargs": null,
        "macro_definition": null,
        "has_side_effects": false,
        "internal": true,
        "examples": [
          "last_day(TIMESTAMP '1992-03-22 01:02:03.1234')"
        ],
        "stability": "CONSISTENT",
        "categories": [],
        "alias_of": null
      }
    },
    {
      "id": "overload-2637a52348ea8e38",
      "url": "/products/haybarn/functions/releases/duckdb-1.3.2/last_day/#overload-2637a52348ea8e38",
      "signature": "last_day(ts: TIMESTAMP) → DATE",
      "parameterOrder": "catalog-order",
      "callingConvention": {
        "source": null,
        "parameters": [
          {
            "name": "ts",
            "type": "TIMESTAMP",
            "mode": null,
            "position": null
          }
        ],
        "positional": null,
        "named": null,
        "variadic": null,
        "evidence": null
      },
      "syntax": {
        "kind": "function",
        "operator": null
      },
      "catalog": {
        "schema_name": "main",
        "function_name": "last_day",
        "function_type": "scalar",
        "description": "Returns the last day of the month",
        "comment": null,
        "return_type": "DATE",
        "parameters": [
          "ts"
        ],
        "parameter_types": [
          "TIMESTAMP"
        ],
        "varargs": null,
        "macro_definition": null,
        "has_side_effects": false,
        "internal": true,
        "examples": [
          "last_day(TIMESTAMP '1992-03-22 01:02:03.1234')"
        ],
        "stability": "CONSISTENT",
        "categories": [],
        "alias_of": null
      }
    },
    {
      "id": "overload-269c0489cd4e6abf",
      "url": "/products/haybarn/functions/releases/duckdb-1.3.2/last_day/#overload-269c0489cd4e6abf",
      "signature": "last_day(ts: TIMESTAMP WITH TIME ZONE) → DATE",
      "parameterOrder": "catalog-order",
      "callingConvention": {
        "source": null,
        "parameters": [
          {
            "name": "ts",
            "type": "TIMESTAMP WITH TIME ZONE",
            "mode": null,
            "position": null
          }
        ],
        "positional": null,
        "named": null,
        "variadic": null,
        "evidence": null
      },
      "syntax": {
        "kind": "function",
        "operator": null
      },
      "catalog": {
        "schema_name": "main",
        "function_name": "last_day",
        "function_type": "scalar",
        "description": "Returns the last day of the month",
        "comment": null,
        "return_type": "DATE",
        "parameters": [
          "ts"
        ],
        "parameter_types": [
          "TIMESTAMP WITH TIME ZONE"
        ],
        "varargs": null,
        "macro_definition": null,
        "has_side_effects": false,
        "internal": true,
        "examples": [
          "last_day(TIMESTAMP '1992-03-22 01:02:03.1234')"
        ],
        "stability": "CONSISTENT",
        "categories": [],
        "alias_of": null
      }
    }
  ],
  "editorial": {
    "argumentNotes": [],
    "recipes": []
  },
  "examples": [
    {
      "original": "last_day(TIMESTAMP '1992-03-22 01:02:03.1234')",
      "sql": "SELECT last_day(TIMESTAMP '1992-03-22 01:02:03.1234');",
      "overloadIds": [
        "overload-6ffadfe49a6b2701",
        "overload-2637a52348ea8e38",
        "overload-269c0489cd4e6abf"
      ],
      "source": "engine-catalog",
      "verification": null
    }
  ],
  "translations": [
    {
      "function": "last_day",
      "scope": "",
      "relation": "rewrite",
      "source": {
        "engine": "Apache Spark",
        "dialect": "spark",
        "name": "months_between",
        "names": [
          "months_between"
        ],
        "sql": "SELECT MONTHS_BETWEEN('1997-02-28 10:30:00', '1996-10-30')"
      },
      "target": {
        "dialect": "duckdb",
        "name": "last_day",
        "sql": "SELECT DATE_DIFF('MONTH', CAST('1996-10-30' AS DATE), CAST('1997-02-28 10:30:00' AS DATE)) + CASE WHEN DAY(CAST('1997-02-28 10:30:00' AS DATE)) = DAY(LAST_DAY(CAST('1997-02-28 10:30:00' AS DATE))) AND DAY(CAST('1996-10-30' AS DATE)) = DAY(LAST_DAY(CAST('1996-10-30' AS DATE))) THEN 0 ELSE (DAY(CAST('1997-02-28 10:30:00' AS DATE)) - DAY(CAST('1996-10-30' AS DATE))) / 31.0 END"
      },
      "formatTokens": [],
      "executionVerified": false,
      "provenance": {
        "name": "SQLGlot",
        "commit": "3086608e6fd4c41c02dfba47171608d2b193fce2",
        "url": "https://github.com/tobymao/sqlglot/blob/3086608e6fd4c41c02dfba47171608d2b193fce2/tests/dialects/test_spark.py#L641"
      }
    },
    {
      "function": "last_day",
      "scope": "",
      "relation": "direct",
      "source": {
        "engine": "BigQuery",
        "dialect": "bigquery",
        "name": "",
        "names": [
          "cast",
          "last_day"
        ],
        "sql": "SELECT LAST_DAY(CAST('2008-11-25' AS DATE), MONTH)"
      },
      "target": {
        "dialect": "duckdb",
        "name": "last_day",
        "sql": "SELECT LAST_DAY(CAST('2008-11-25' AS DATE))"
      },
      "formatTokens": [],
      "executionVerified": false,
      "provenance": {
        "name": "SQLGlot",
        "commit": "3086608e6fd4c41c02dfba47171608d2b193fce2",
        "url": "https://github.com/tobymao/sqlglot/blob/3086608e6fd4c41c02dfba47171608d2b193fce2/tests/dialects/test_bigquery.py#L809"
      }
    },
    {
      "function": "last_day",
      "scope": "",
      "relation": "direct",
      "source": {
        "engine": "Presto",
        "dialect": "presto",
        "name": "",
        "names": [
          "cast",
          "last_day_of_month"
        ],
        "sql": "SELECT LAST_DAY_OF_MONTH(CAST('2008-11-25' AS DATE))"
      },
      "target": {
        "dialect": "duckdb",
        "name": "last_day",
        "sql": "SELECT LAST_DAY(CAST('2008-11-25' AS DATE))"
      },
      "formatTokens": [],
      "executionVerified": false,
      "provenance": {
        "name": "SQLGlot",
        "commit": "3086608e6fd4c41c02dfba47171608d2b193fce2",
        "url": "https://github.com/tobymao/sqlglot/blob/3086608e6fd4c41c02dfba47171608d2b193fce2/tests/dialects/test_presto.py#L810"
      }
    },
    {
      "function": "last_day",
      "scope": "",
      "relation": "direct",
      "source": {
        "engine": "SQL Server",
        "dialect": "tsql",
        "name": "",
        "names": [
          "eomonth",
          "getdate"
        ],
        "sql": "EOMONTH(GETDATE())"
      },
      "target": {
        "dialect": "duckdb",
        "name": "last_day",
        "sql": "LAST_DAY(CAST(CURRENT_TIMESTAMP AS DATE))"
      },
      "formatTokens": [],
      "executionVerified": false,
      "provenance": {
        "name": "SQLGlot",
        "commit": "3086608e6fd4c41c02dfba47171608d2b193fce2",
        "url": "https://github.com/tobymao/sqlglot/blob/3086608e6fd4c41c02dfba47171608d2b193fce2/tests/dialects/test_tsql.py#L2147"
      }
    },
    {
      "function": "last_day",
      "scope": "",
      "relation": "direct",
      "source": {
        "engine": "Snowflake",
        "dialect": "snowflake",
        "name": "",
        "names": [
          "cast",
          "last_day"
        ],
        "sql": "LAST_DAY(CAST('2023-04-15' AS DATE))"
      },
      "target": {
        "dialect": "duckdb",
        "name": "last_day",
        "sql": "LAST_DAY(CAST('2023-04-15' AS DATE))"
      },
      "formatTokens": [],
      "executionVerified": false,
      "provenance": {
        "name": "SQLGlot",
        "commit": "3086608e6fd4c41c02dfba47171608d2b193fce2",
        "url": "https://github.com/tobymao/sqlglot/blob/3086608e6fd4c41c02dfba47171608d2b193fce2/tests/dialects/test_snowflake.py#L2799"
      }
    }
  ],
  "runnableExamples": [
    {
      "function": "last_day",
      "original": "last_day(TIMESTAMP '1992-03-22 01:02:03.1234')",
      "sql": "SELECT last_day(TIMESTAMP '1992-03-22 01:02:03.1234');",
      "source": "engine-catalog",
      "verification": {
        "engine": "haybarn-wasm",
        "packageVersion": "1.5.5-rc3",
        "sourceId": "105edd31b5",
        "binarySha256": "426638bc374fcc542fea93b251f885bfb7d221c68fcc0a5a81cc565d7e6ca180",
        "rowCount": 1
      }
    }
  ],
  "additionalDocumentation": [
    {
      "title": "Date Functions",
      "url": "https://duckdb.org/docs/current/sql/functions/date#last_daydate"
    },
    {
      "title": "Timestamp Functions",
      "url": "https://duckdb.org/docs/current/sql/functions/timestamp#last_daytimestamp"
    },
    {
      "title": "Timestamp with Time Zone Functions",
      "url": "https://duckdb.org/docs/current/sql/functions/timestamptz#last_daytimestamptz"
    }
  ],
  "availability": [
    {
      "snapshot": "haybarn-1.5.5-rc3",
      "observed": true,
      "overloadCount": 3,
      "matchingOverloadIds": [
        "overload-6ffadfe49a6b2701",
        "overload-269c0489cd4e6abf",
        "overload-2637a52348ea8e38"
      ],
      "json": "/products/haybarn/functions/api/v1/haybarn-1.5.5-rc3/functions/last_day.json"
    },
    {
      "snapshot": "duckdb-1.5.5",
      "observed": true,
      "overloadCount": 3,
      "matchingOverloadIds": [
        "overload-6ffadfe49a6b2701",
        "overload-269c0489cd4e6abf",
        "overload-2637a52348ea8e38"
      ],
      "json": "/products/haybarn/functions/api/v1/duckdb-1.5.5/functions/last_day.json"
    },
    {
      "snapshot": "duckdb-1.4.4",
      "observed": true,
      "overloadCount": 3,
      "matchingOverloadIds": [
        "overload-6ffadfe49a6b2701",
        "overload-269c0489cd4e6abf",
        "overload-2637a52348ea8e38"
      ],
      "json": "/products/haybarn/functions/api/v1/duckdb-1.4.4/functions/last_day.json"
    },
    {
      "snapshot": "duckdb-1.3.2",
      "observed": true,
      "overloadCount": 3,
      "matchingOverloadIds": [
        "overload-6ffadfe49a6b2701",
        "overload-269c0489cd4e6abf",
        "overload-2637a52348ea8e38"
      ],
      "json": "/products/haybarn/functions/api/v1/duckdb-1.3.2/functions/last_day.json"
    }
  ]
}
