### Operadores Aritméticos

Los Operadores Aritméticos de SQL se utilizan para hacer operaciones aritméticas que devuelven un solo valor.

Operador | Descripción | Ejemplo
--- | --- | ---
+ | Operador Suma | amount + 2
- | Operador Resta | amount - 2
* | Operador Multiplicación | amount * 2
/ | Operador División | amount / 2
% | Operador Resto | amount % 2
DIV | División Entera | amount DIV 2
- | Menos unario, cambia el signo del argumento | -(amount)

### Funciones de Agregados

Las Funciones de Agregados de SQL devuelven un solo valor, calculado a partir de los valores de una columna.

Función | Descripción | Ejemplo
--- | --- | ---
AVG(columnName) | Devuelve la media aritmética | AVG(amount)
COUNT(columnName) | Devuelve el número de filas | COUNT(id)
FIRST(columnName) | Devuelve el primer valor | FIRST(name)
LAST(columnName) | Devuelve el último valor | LAST(name)
MAX(columnName) | Devuelve el mayor valor | MAX(date_entered)
MIN(columnName) | Devuelve el menor valor | MIN(date_entered)
SUM(columnName) | Devuelve la suma | SUM(amount)

### Funciones sobre Fechas

Las Funciones sobre Fechas de SQL devuleven una fecha, basado en el valor de entrada.

Función | Descripción | Ejemplo
--- | --- | ---
NOW() | Devuelve la fecha y hora actual del sistema | NOW()
CURDATE() | Devuelve la fecha actual | CURDATE()
CURTIME() | Devuelve la hora actual | CURTIME()
DATE(dateString) | Obtiene la parte fecha de una expresion Fecha/Hora | DATE('2010-01-01 18:00:00')
EXTRACT(unit* FROM dateA) | Devuelve una parte unitaria de una Fecha/Hora | EXTRACT(MONTH FROM date_entered)
DATE_ADD(dateA, INTERVAL time unit*) | Suma un determinado intervalo de tiempo a dateA | DATE_ADD(date_entered, INTERVAL 4 WEEK)
DATE_SUB(dateA, INTERVAL time unit*) | Resta un determinado intervalo de tiempo a dateA | DATE_SUB(date_entered, INTERVAL 2 DAY)
DATEDIFF(dateA, dateB) | Devuelve el número de días entre dos fechas | DATEDIFF(date_entered, '2010-01-01')
DATE_FORMAT(dateA, format*) | Muestra fechas en diferentes formatos | DATE_FORMAT(date_entered, '%d-%m-%Y')

### Fuciones sobre Números

Las Funciones sobre Números de SQL devuelven un solo valor, basado en el valor numérico de entrada.

Función | Descripción | Ejemplo
--- | --- | ---
BIN(intA) | Devuelve el valor binario para IntA | BIN(9)
CHAR(numA,... [USING charset]) | Devuelve el valor del caracter para un número entero dado | CHAR(0xC3BC USING utf8)
CONV(numA, fromBase, toBase) | Convierte números entre distintas bases | CONV(8, 10, 2)
ELT(intA, str1, str2, str3,...) | Devuelve str1 si intA=1 y str2 si intA=2... etcétera | SELECT(2, 'a', 'b', 'c')
HEX(intA) | Devuelve la representaciñon hexadecimal para intA | HEX(amount)
OCT(intA) | Devuelve la representaciñon hexadecimal para intA | OCT(15)
ROUND(numA, decimals) | Redondea un campo numérico al número de decimales especificado | ROUND(3.14159, 4)
FORMAT(numA, decimals) | Formatea un número en base a la plantilla '#,###.##', Redondeando decimales | FORMAT(amount, 2)

### Funciones sobre Cadenas

Las Funciones sobre Cadenas de SQL devuelven un único valor de cadena, basado en el valor de entrada.

Función | Descripción | Ejemplo
--- | --- | ---
BIT_LENGTH(strA) | Devuelve el tamaño de la cadena en bits | BIT_LENGTH('a')
CHAR_LENGTH(strA) | Devuelve el tamaño de una cadena | CHAR_LENGTH(name)
CHARACTER_LENGTH(strA) | Devuelve el tamaño de una cadena | CHARACTER_LENGTH('abcdefg')
LENGTH/OCTET_LENGTH(strA) | Devuelve el tamaño de una cadena en bytes | LENGTH('AlineaSol')
CHARINDEX(strA, strB [,start]) | Devuelve la posición inicial de la cadena strA dentro de StringB | CHARINDEX('Sol', 'AlineaSol')
ASCII(strA) | Devuelve el código de tecla ASCII | ASCII('A')
UCASE/UPPER(strA) | Convierte un campo a Mayúsculas | UCASE('alineasol')
LCASE/LOWER(strA) | Convierte un campo a Minúsculas | LCASE(name)
MID(strA, start[, length]) | Extrae carateres de un campo tipo cadena | MID(description, 5, 10)
CONCAT(strA, strB,....) | Devuelve cadenas concatenadas | CONCAT('Alinea', 'Sol')

### Funciones sobre Cadenas 2

Las Funciones sobre Cadenas de SQL devuelven un único valor de cadena, basado en el valor de entrada.

Función | Descripción | Ejemplo
--- | --- | ---
CONCAT_WS(separator, strA, strB,....) | Devuelve cadenas concatenadas con caracter separador | CONCAT_WS(' ', name, surName)
SPACE(int) | Devuelve espacios la sentencia SQL | SPACE(2)
REPLACE(strA, strB, strC) | Reemplaza todas las apariciones de strB en strA con strC | REPLACE(description, 'a', 'z')
INSERT(strA, pos, len, newStr) | Sustituye dentro de strA, la cadena newStr | INSERT(name, 0, 1, 'Asol')
INSTR(strA,subStr) | Devuelve la posición de la primera aparición de subStr en strA | INSTR(description, 'AlineaSol')
LEFT(strA, int) | Devuelve la parte izquierda de strA con int número de caracteres | LEFT(name, 5)
RIGHT(strA, int) | Devuelve la parte derecha de strA con int número de caracteres | RIGHT('AlineaSol', 3)
SUBSTRING(strA, startIndex, length) | Devuelve parte de la cadena strA | SUBSTRING(name, 0, 10)
REVERSE(strA) | Devuelve la inversa de la cadena strA | REVERSE(name)
LTRIM(strA) | Devuelve strA después de quitar los espacios de la izquierda | LTRIM(' Z')
RTRIM(strA) | Devuelve strA después de quitar los espacios de la derecha | RTRIM('A ')

### Apéndice

Constantes Usadas por mySQL

Unidades de Fecha | Formato de Fecha
--- | ---
MICROSECOND SECOND MINUTE HOUR DAY WEEK MONTH QUARTER YEAR SECOND_MICROSECOND MINUTE_MICROSECOND MINUTE_SECOND HOUR_MICROSECOND HOUR_SECOND HOUR_MINUTE DAY_MICROSECOND DAY_SECOND DAY_MINUTE DAY_HOUR YEAR_MONTH | %a Nombre del día de la semana abreviado, %b Nombre abreviado del mes %c Mes, numérico, %D Día del mes con sufijo Inglés %d Día del mes, numérico (00-31), %e Día del mes, numérico (0-31) %f Microsegundos, %H Hora (00-23) %h Hora (01-12), %I Hora (01-12) %i Minutos, numérico (00-59), %j Día del año (001-366) %k Hora (0-23), %l Hora (1-12) %M Nombre del mes, %m Mes, numérico (00-12) %p AM o PM, %r Hora, 12-horas (hh:mm:ss AM or PM) %S Segundos (00-59), %s Segundos (00-59) %T Hora, 24-horas (hh:mm:ss) %U Semana (00-53) donde Domingo es el primer día de la semana %u Semana (00-53) donde Lunes es el primer día de la semana %V Semana (01-53) donde Domingo es el primer día de la semana, usado con %X %v Semana (01-53) donde Lunes es el primer día de la semana, usado con %x %W Nombre del día de la semana, %w Día de la semana (0=Domingo 6=Sábado) %X Año de la semana donde Domingo es el primer día de al semana, cuatro dígitos, usado con %V %x Año de la semana donde Lunes es el primer día de la semana, cuatro dígitos, usado con %v %Y Año, cuatro dígitos, %y Año, dos dígitos

### Variables Informes

Definición de Variables usadas por AlineaSol Reports.
Las variables sobre campos relacionados y/o custom sólo podrán ser usadas si al menos un campo de la tabla de ese related/custom field es añadido al informe.

Tipo de Variable | Descripción | Ejemplo
--- | --- | ---
${this} | Referencia al valor del campo actual | ${this}
${bean->Field} | Referencia un campo del módulo principal | ${bean->name}
${bean_cstm->Field_c} | Referencia un campo custom del módulo principal | ${bean_cstm->account_type_c}
${ModName->LinkField->RelField} | Referencia al valor de un campo relacionado | ${Accounts->account_id_c->name}
${ModName_Cstm->LinkField->RelField_c} | Referencia al valor de campo relacionado custom | ${Accounts_Cstm->account_id_c->type_c}