# Функции приведения типов

Приведение типов включает три основных действия: преобразование, переинтерпретацию и повышение.
* **Преобразование**. Это процесс изменения типа данных значения на другой тип данных. Он требует дополнительных вычислений и выполняется исключительно функцией `TO_STRING()`.
* **Переинтерпретация**. Это процесс обработки бинарных данных, представляющих значение, так, как если бы они имели другой тип данных, без фактического изменения исходных данных. Обрабатывается функцией `SINT()`, не требует дополнительных вычислений; просто переинтерпретирует существующие данные.
* **Повышение**. Это процесс преобразования значения в «больший» или более точный тип данных. Оно также не требует дополнительных вычислений; просто запрашивает у аргумента возврат значения другого типа. Только JSON-поля и несколько других функций могут повышать свои значения до целых чисел. Если аргумент не может выдать значение другого типа, повышение завершится неудачей. Например, функция `TIMEDIFF()` обычно возвращает строку, но может также вернуть число. Поэтому `BIGINT(TIMEDIFF(1,2))` выполнится успешно, заставляя `TIMEDIFF()` вернуть целочисленное значение. Напротив, `DATE_FORMAT()` возвращает только строки и не может выдать число, следовательно, `BIGINT(DATE_FORMAT(...))` завершится ошибкой.

### BIGINT()

Эта функция повышает целочисленный аргумент до 64-битного типа, оставляя аргументы с плавающей точкой без изменений. Она предназначена для обеспечения вычисления определённых выражений (таких как `a*b`) в 64-битном режиме, даже если все аргументы 32-битные.

### DOUBLE()

Функция `DOUBLE()` повышает свой аргумент до типа с плавающей точкой. Она служит для принудительного вычисления числовых JSON-полей.

### INTEGER()

Функция `INTEGER()` повышает свой аргумент до 64-битного знакового типа. Она предназначена для принудительного вычисления числовых JSON-полей.

### TO_STRING()

Эта функция принудительно преобразует свой аргумент к строковому типу.

### UINT()

Функция `UINT()` повышает свой аргумент до 32-битного беззнакового целого типа.

### UINT64()

Функция `UINT64()` повышает свой аргумент до 64-битного беззнакового целого типа.

### SINT()

Функция `SINT()` принудительно переинтерпретирует свой 32-битный беззнаковый целочисленный аргумент как знаковый и расширяет его до 64-битного типа (поскольку 32-битный тип беззнаковый). Например, выражение 1-2 обычно вычисляется как 4294967295, но `SINT(1-2)` вычисляется как -1.
<!-- proofread -->

