ADDDATE
Sintaxis:
ADDDATE(DATE,INTERVAL expr TYPE), ADDDATE(expr,days)
Descripción:
Cuando se utiliza con la forma
INTERVAL del segundo argumento,
ADDDATE() es sinónimo de
DATE_ADD(). La función relacionada
SUBDATE() es sinónimo de
DATE_SUB(). Para información del argumento
INTERVAL, consulte la discusión de
DATE_ADD().
**Ejemplos**
a)Sumar 31 dias a las fechas.
a)SELECT HIRE_DATE, ADDDATE(HIRE_DATE, INTERVAL 31 DAY)
FROM EMPLOYEES;
----RESULTADO----
+---------------------+-------------------------------------+
| HIRE_DATE | ADDDATE(HIRE_DATE, INTERVAL 31 DAY) |
+---------------------+-------------------------------------+
| 1987-06-17 00:00:00 | 1987-07-18 00:00:00 |
| 1989-09-21 00:00:00 | 1989-10-22 00:00:00 |
| 1993-01-13 00:00:00 | 1993-02-13 00:00:00 |
| 1990-01-03 00:00:00 | 1990-02-03 00:00:00 |
| 1991-05-21 00:00:00 | 1991-06-21 00:00:00 |
+---------------------+-------------------------------------+
ADDTIME
Sintaxis:
ADDTIME(expr1,expr2)
Descripción:
ADDTIME() añade expr2 a expr1 y retorna el resultado. expr1 es una expresión de fecha u hora y fecha, y expr2 es una expresión temporal.
**Ejemplo**
Añadir 2 díAS y 12 horas a los empleados que fueron contratados en 1997-08-20
SELECT FIRST_NAME, LAST_NAME, ADDTIME('1997-08-20 00:00:00', '2 12:00:00') HIRE_DATE
FROM EMPLOYEES
WHERE HIRE_DATE='1997-08-20';
----RESULTADO----
+------------+-----------+---------------------+
| FIRST_NAME | LAST_NAME | HIRE_DATE |
+------------+-----------+---------------------+
| Laura | Bissot | 1997-08-22 12:00:00 |
| Peter | Hall | 1997-08-22 12:00:00 |
+------------+-----------+---------------------+
TIMESTAMPADD
Sintaxis:
TIMESTAMPADD(INTERVAL,int_expr,datetime_expr)
Descripción:
Suma la expresión entera
int_expr a la expresión de fecha o de fecha/hora
datetime_expr. Las
unidades para int_expr se toman del argumento interval, que debe ser uno de los siguientes valores:
FRAC_SECOND, SECOND, MINUTE, HOUR, DAY, WEEK, MONTH, QUARTER, o YEAR.
El valor interval puede especificarse usando una de las palabras claves que se muestran, o con un prefijo de SQL_TSI_. Por ejemplo, DAY o SQL_TSI_DAY son ambas legales.
**Ejemplos**
**A)**SELECT TIMESTAMPADD(MINUTE,5,'2014-02-02');
Devuelve-> '2014-02-02 00:05:00'
B)SELECT TIMESTAMPADD(MONTH,1,'2014-01-01');
Devuelve-> '2014-02-01'
DATE_ADD
Sintaxis:
DATE_ADD(DATE,INTERVAL expr TYPE), DATE_SUB(DATE,INTERVAL expr TYPE)
Descripción:
Estas funciones realizan operaciones aritméticas de fechas.
date es un valor
DATETIME o
DATE especificando la fecha de inicio.
expr es una expresión que especifica el intervalo a añadir o borrar de la fecha de inicio.
expr es una cadena; puede comenzar con un '-' para intervalos negativos.
type es una palabra clave que indica cómo debe interpretarse la expresión.
La palabra clave
INTERVAL y el especificador
type no son sensibles a mayúsculas.
La siguiente tabla muestra cómo se relacionan los argumentos
type y
expr:
type Value |
Expected expr Format |
MICROSECOND |
MICROSECONDS |
SECOND |
SECONDS |
MINUTE |
MINUTES |
HOUR |
HOURS |
DAY |
DAYS |
WEEK |
WEEKS |
MONTH |
MONTHS |
QUARTER |
QUARTERS |
YEAR |
YEARS |
SECOND_MICROSECOND |
'SECONDS_MICROSECONDS' |
MINUTE_MICROSECOND |
'MINUTES_MICROSECONDS' |
MINUTE_SECOND |
'MINUTES:SECONDS' |
HOUR_MICROSECOND |
'HOURS_MICROSECONDS' |
HOUR:SECOND |
'HOURS:MINUTES:SECONDS' |
HOUR_MINUTE |
'HOURS:MINUTES' |
DAY_MICROSECOND |
'DAYS_MICROSECONDS' |
DAY_SECOND |
'DAYS HOURS:MINUTES:SECONDS' |
DAY_MINUTE |
'DAYS HOURS:MINUTES' |
DAY_HOUR |
'DAYS HOURS' |
YEAR_MONTH |
'YEARS_MONTHS' |
MySQL permite cualquier delimitador en el formato
expr. Los mostrados en la tabla son sugerencias. Si el argumento
date es un valor
DATE y sus cálculos involucran sólo las partes de
YEAR,
MONTH, y
DAY (es decir, sin las partes de hora), el resultado es un valor
DATE. En otro caso, el resultado es un valor
DATETIME.
INTERVAL expr type se permite en cualquier lado del operador + si la expresión en el otro lado es una fecha o fecha y hora. Para el operador - ,
INTERVAL expr type se permite sólo en la parte derecha, ya que no tiene sentido restar una fecha de un intervalo.
**Ejemplos**
A)sumale un día a la fecha 1990-01-03
B)Muestra el nombre y el apellido de los trabajadores contratados despues de sumarle 1 año a la fecha
1997-08-17.
C)Muestra el nombre y el apellido de los trabajadores contratados entre la suma de 1 año a estas dos
fechas 1994-08-17 y 1995-08-17
A)SELECT DATE_ADD('1990-01-03', INTERVAL 1 DAY);
----RESULTADO----
+----------------------------------------+
| DATE_ADD('1990-01-03', INTERVAL 1 DAY) |
+----------------------------------------+
| 1990-01-04 |
+----------------------------------------+
B)SELECT FIRST_NAME, LAST_NAME
FROM EMPLOYEES
WHERE DATE_ADD('1997-08-17',INTERVAL 1 YEAR)<HIRE_DATE;
----RESULTADO----
+------------+------------+
| FIRST_NAME | LAST_NAME |
+------------+------------+
| Diana | Lorentz |
| Luis | Popp |
| Guy | Himuro |
| Karen | Colmenares |
| Kevin | Mourgos |
+------------+------------+
C)SELECT FIRST_NAME, LAST_NAME
FROM EMPLOYEES
WHERE DATE_ADD('1994-08-17',INTERVAL 1 YEAR)<HIRE_DATE &&
DATE_ADD('1995-08-17',INTERVAL 1 YEAR)>HIRE_DATE;
----RESULTADO----
+------------+-----------+
| FIRST_NAME | LAST_NAME |
+------------+-----------+
| Matthew | Weiss |
| Jason | Mallin |
| Trenna | Rajs |
| Janette | King |
| Patrick | Sully |
+------------+-----------+
Si especifica un intervalo demasiado pequeño (no incluye todas las partes de intervalo que se esperarían de la palabra clave
type), MySQL asume que ha dejado la parte más a la izquierda del valor del intervalo. Por ejemplo, si especifica un type de
DAY_SECOND, se espera que el valor de
expr tenga días, horas, minutos y segundos. Si especifica un valor como '1:10', MySQL asume que las partes de día y hora no se encuentran disponibles y que el valor representa minutos y segundos. En otras palabras, '1:10' DAY_SECOND se interpreta de forma que es equivalente a '1:10'
MINUTE_SECOND. Esto es análogo a la forma en que MySQL interpreta valores
TIME como representando tiempo transcurrido en lugar de la hora del día.
Si suma o borra de un valor de fecha algo que contenga una parte de la hora, el resultado se convierte automáticamente a valor fecha/hora.
PERIOD_ADD
Sintaxis:
PERIOD_ADD(P,N)
Descripción:
Añade
N meses al período
P, que se escribe en formato
YYMM ó
YYYYMM. Atención porque e
l período P no es un valor de fecha. Esta función devuelve un valor en el formato YYYYMM.
**Ejemplo**
Se añaden 2 meses al periodo 9801 (año=98; mes:01) y devuelve el valor '199803' (año=1998; mes;3)
SELECT PERIOD_ADD(9801,2);
----RESULTADO----
+--------------------+
| PERIOD_ADD(9801,2) |
+--------------------+
| 199803 |
+--------------------+
GET_FORMAT
Sintaxis:
GET_FORMAT(DATE | TIME | TIMESTAMP, 'EUR' | 'USA' | 'JIS' | 'ISO' | 'INTERNAL')
Definición:
Devuelve una cadena de formato. Esta función es útil en combinación con las funciones
DATE_FORMAT() y
STR_TO_DATE().
Los tres posibles valores para el primer argumento y los cinco para el segundo implican 15 posibles cadenas de formato (para los especificadores usados, ver la tabla en la descripción de la función
DATE_FORMAT()).
**Ejemplo**
SELECT DATE_FORMAT('2003-10-03',GET_FORMAT(DATE,'EUR'));
----RESULTADO----
+--------------------------------------------------+
| DATE_FORMAT('2003-10-03',GET_FORMAT(DATE,'EUR')) |
+--------------------------------------------------+
| 03.10.2003 |
+--------------------------------------------------+
SELECT STR_TO_DATE('10.31.2003',GET_FORMAT(DATE,'USA'));
----RESULTADO----
+--------------------------------------------------+
| STR_TO_DATE('10.31.2003',GET_FORMAT(DATE,'USA')) |
+--------------------------------------------------+
| 2003-10-31 |
+--------------------------------------------------+
Llamada a función |
Resultado |
GET_FORMAT(DATE,'USA') |
'%m.%d.%Y' |
GET_FORMAT(DATE,'JIS') |
'%Y-%m-%d' |
GET_FORMAT(DATE,'ISO') |
'%Y-%m-%d' |
GET_FORMAT(DATE,'EUR') |
'%d.%m.%Y' |
GET_FORMAT(DATE,'INTERNAL') |
'%Y%m%d' |
GET_FORMAT(TIMESTAMP,'USA') |
'%Y-%m-%d-%H.%i.%s' |
GET_FORMAT(TIMESTAMP,'JIS') |
'%Y-%m-%d%H:%i:%s' |
GET_FORMAT(TIMESTAMP,'ISO') |
'%Y-%m-%d%H:%i:%s' |
GET_FORMAT(TIMESTAMP,'EUR') |
'%Y-%m-%d-%H.%i.%s' |
GET_FORMAT(TIMESTAMP,'INTERNAL') |
'%Y%m%d%H%i%s' |
GET_FORMAT(TIME,'USA') |
'%h:%i:%s%p' |
GET_FORMAT(TIME,'JIS') |
'%H:%i:%s' |
GET_FORMAT(TIME,'ISO') |
'%H:%i:%s' |
GET_FORMAT(TIME,'EUR') |
'%H.%i.%s' |
GET_FORMAT(TIME,'INTERNAL') |
'%H%i%s' |
El formato ISO se refiere a ISO 9075, no a ISO 8601.
<Anterior Home^ Siguiente>