{
  "comment" : "This is generated by ESQL's AbstractFunctionTestCase. Do not edit it. See ../README.md for how to regenerate it.",
  "type" : "scalar",
  "name" : "date_diff",
  "description" : "Subtracts the `startTimestamp` from the `endTimestamp` and returns the difference in multiples of `unit`.\nIf `startTimestamp` is later than the `endTimestamp`, negative values are returned.",
  "signatures" : [
    {
      "params" : [
        {
          "name" : "unit",
          "type" : "keyword",
          "optional" : false,
          "description" : "Time difference unit"
        },
        {
          "name" : "startTimestamp",
          "type" : "date",
          "optional" : false,
          "description" : "A string representing a start timestamp"
        },
        {
          "name" : "endTimestamp",
          "type" : "date",
          "optional" : false,
          "description" : "A string representing an end timestamp"
        }
      ],
      "variadic" : false,
      "returnType" : "integer"
    },
    {
      "params" : [
        {
          "name" : "unit",
          "type" : "keyword",
          "optional" : false,
          "description" : "Time difference unit"
        },
        {
          "name" : "startTimestamp",
          "type" : "date",
          "optional" : false,
          "description" : "A string representing a start timestamp"
        },
        {
          "name" : "endTimestamp",
          "type" : "date_nanos",
          "optional" : false,
          "description" : "A string representing an end timestamp"
        }
      ],
      "variadic" : false,
      "returnType" : "integer"
    },
    {
      "params" : [
        {
          "name" : "unit",
          "type" : "keyword",
          "optional" : false,
          "description" : "Time difference unit"
        },
        {
          "name" : "startTimestamp",
          "type" : "date_nanos",
          "optional" : false,
          "description" : "A string representing a start timestamp"
        },
        {
          "name" : "endTimestamp",
          "type" : "date",
          "optional" : false,
          "description" : "A string representing an end timestamp"
        }
      ],
      "variadic" : false,
      "returnType" : "integer"
    },
    {
      "params" : [
        {
          "name" : "unit",
          "type" : "keyword",
          "optional" : false,
          "description" : "Time difference unit"
        },
        {
          "name" : "startTimestamp",
          "type" : "date_nanos",
          "optional" : false,
          "description" : "A string representing a start timestamp"
        },
        {
          "name" : "endTimestamp",
          "type" : "date_nanos",
          "optional" : false,
          "description" : "A string representing an end timestamp"
        }
      ],
      "variadic" : false,
      "returnType" : "integer"
    },
    {
      "params" : [
        {
          "name" : "unit",
          "type" : "text",
          "optional" : false,
          "description" : "Time difference unit"
        },
        {
          "name" : "startTimestamp",
          "type" : "date",
          "optional" : false,
          "description" : "A string representing a start timestamp"
        },
        {
          "name" : "endTimestamp",
          "type" : "date",
          "optional" : false,
          "description" : "A string representing an end timestamp"
        }
      ],
      "variadic" : false,
      "returnType" : "integer"
    },
    {
      "params" : [
        {
          "name" : "unit",
          "type" : "text",
          "optional" : false,
          "description" : "Time difference unit"
        },
        {
          "name" : "startTimestamp",
          "type" : "date",
          "optional" : false,
          "description" : "A string representing a start timestamp"
        },
        {
          "name" : "endTimestamp",
          "type" : "date_nanos",
          "optional" : false,
          "description" : "A string representing an end timestamp"
        }
      ],
      "variadic" : false,
      "returnType" : "integer"
    },
    {
      "params" : [
        {
          "name" : "unit",
          "type" : "text",
          "optional" : false,
          "description" : "Time difference unit"
        },
        {
          "name" : "startTimestamp",
          "type" : "date_nanos",
          "optional" : false,
          "description" : "A string representing a start timestamp"
        },
        {
          "name" : "endTimestamp",
          "type" : "date",
          "optional" : false,
          "description" : "A string representing an end timestamp"
        }
      ],
      "variadic" : false,
      "returnType" : "integer"
    },
    {
      "params" : [
        {
          "name" : "unit",
          "type" : "text",
          "optional" : false,
          "description" : "Time difference unit"
        },
        {
          "name" : "startTimestamp",
          "type" : "date_nanos",
          "optional" : false,
          "description" : "A string representing a start timestamp"
        },
        {
          "name" : "endTimestamp",
          "type" : "date_nanos",
          "optional" : false,
          "description" : "A string representing an end timestamp"
        }
      ],
      "variadic" : false,
      "returnType" : "integer"
    }
  ],
  "examples" : [
    "ROW date1 = TO_DATETIME(\"2023-12-02T11:00:00.000Z\"),\n    date2 = TO_DATETIME(\"2023-12-02T11:00:00.001Z\")\n| EVAL dd_ms = DATE_DIFF(\"microseconds\", date1, date2)",
    "ROW end_23 = TO_DATETIME(\"2023-12-31T23:59:59.999Z\"),\n  start_24 = TO_DATETIME(\"2024-01-01T00:00:00.000Z\"),\n    end_24 = TO_DATETIME(\"2024-12-31T23:59:59.999\")\n| EVAL end23_to_start24 = DATE_DIFF(\"year\", end_23, start_24)\n| EVAL end23_to_end24   = DATE_DIFF(\"year\", end_23, end_24)\n| EVAL start_to_end_24  = DATE_DIFF(\"year\", start_24, end_24)"
  ],
  "preview" : false,
  "snapshot_only" : false
}
