1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465 |
- [[esql-implicit-casting]]
- === {esql} implicit casting
- ++++
- <titleabbrev>Implicit casting</titleabbrev>
- ++++
- Often users will input `date`, `ip`, `version`, `date_period` or `time_duration` as simple strings in their queries for use in predicates, functions, or expressions. {esql} provides <<esql-type-conversion-functions, type conversion functions>> to explicitly convert these strings into the desired data types.
- Without implicit casting users must explicitly code these `to_X` functions in their queries, when string literals don't match the target data types they are assigned or compared to. Here is an example of using `to_datetime` to explicitly perform a data type conversion.
- [source.merge.styled,esql]
- ----
- FROM employees
- | EVAL dd_ns1=date_diff("day", to_datetime("2023-12-02T11:00:00.00Z"), birth_date)
- | SORT emp_no
- | KEEP dd_ns1
- | LIMIT 1
- ----
- Implicit casting improves usability, by automatically converting string literals to the target data type. This is most useful when the target data type is `date`, `ip`, `version`, `date_period` or `time_duration`. It is natural to specify these as a string in queries.
- The first query can be coded without calling the `to_datetime` function, as follows:
- [source.merge.styled,esql]
- ----
- FROM employees
- | EVAL dd_ns1=date_diff("day", "2023-12-02T11:00:00.00Z", birth_date)
- | SORT emp_no
- | KEEP dd_ns1
- | LIMIT 1
- ----
- [float]
- === Implicit casting support
- The following table details which {esql} operations support implicit casting for different data types.
- [%header.monospaced.styled,format=dsv,separator=|]
- |===
- ||ScalarFunction*|Operator*|<<esql-group-functions, GroupingFunction>>|<<esql-agg-functions, AggregateFunction>>
- |DATE|Y|Y|Y|N
- |IP|Y|Y|Y|N
- |VERSION|Y|Y|Y|N
- |BOOLEAN|Y|Y|Y|N
- |DATE_PERIOD/TIME_DURATION|Y|N|Y|N
- |===
- ScalarFunction* includes:
- <<esql-conditional-functions-and-expressions, Conditional Functions and Expressions>>
- <<esql-date-time-functions, Date and Time Functions>>
- <<esql-ip-functions, IP Functions>>
- Operator* includes:
- <<esql-binary-operators, Binary Operators>>
- <<esql-unary-operators, Unary Operator>>
- <<esql-in-operator, IN>>
|