Está en la página 1de 19

Switch Case PHP

<?php switch ($i) { case 0: echo "i es igual a break; case 1: echo "i es igual a break; case 2: echo "i es igual a break; default: echo "i no es igual } ?>

0"; 1"; 2"; a 0, 1 ni 2";

Funciones de Fecha y Hora MySQL


Esta seccin describe las funciones que pueden usarse para manipular valores temporales. Consulte Seccin 11.3, Tipos de fecha y hora para una descripcin del rango de los valores que tiene cada fecha y hora y los formatos vlidos en que se puedene especificar los valores. Aqu hay un ejemplo que usa funciones de fecha. La siguiente consulta selecciona todos los registros con un valor date_col dentro de los ltimos 30 das:
mysql> SELECT something FROM tbl_name -> WHERE DATE_SUB(CURDATE(),INTERVAL 30 DAY) <= date_col;

Tenga en cuenta que la consulta tambin selecciona registros con fechas futuras. Las funciones que esperan valores de fecha usualmente aceptan valores de fecha y hora e ignoran la parte de hora. Las funciones que esperan valores de hora usualmente aceptan valores de fecha y hora e ignoran la parte de fecha. Las funciones que retornan la fecha u hora actuales se evalan slo una vez por consulta al principio de la ejecucin de consulta. Esto significa que las referencias mltiples a una funcin tales como NOW() en una misma consulta siempre producen el mismo resultado. Este principio tambin se aplica a CURDATE(), CURTIME(), UTC_DATE(), UTC_TIME(), UTC_TIMESTAMP(), y a cualquiera de sus sinnimos. En MySQL 5.0, las funciones CURRENT_TIMESTAMP(), CURRENT_TIME(), CURRENT_DATE(), y FROM_UNIXTIME() retornan valores en la zona horaria de la conexin, que est disponible como valor de la variable de sistema time_zone . Adems, UNIX_TIMESTAMP() asume que su argumento es un valor de fecha y hora en la

zona horaria actual. Consulte Seccin 5.9.8, Soporte de zonas horarias en el servidor MySQL. Los rango de retorno en las siguientes descripciones de funciones se aplican en fechas completas. Si la fecha es un valor cero o una fecha incompleta como '2001-11-00', las funciones que extraen una parte de la fecha pueden retornar 0. Por ejemplo DAYOFMONTH('2001-11-00') retorna 0.
ADDDATE(date,INTERVAL expr type), ADDDATE(expr,days)

Cuando se invoca con la forma INTERVAL del segundo argumento, ADDDATE() es sinnimo de DATE_ADD(). La funcin relacionada SUBDATE() es sinnimo de DATE_SUB(). Para informacin del argumento INTERVAL , consulte la discusin de DATE_ADD().
mysql> SELECT DATE_ADD('1998-01-02', INTERVAL 31 DAY); -> '1998-02-02' mysql> SELECT ADDDATE('1998-01-02', INTERVAL 31 DAY); -> '1998-02-02'

Si el argumento days es simplemente un valor entero, entonces MySQL 5.0 lo trata como el nmero de das a aadir a expr.
mysql> SELECT ADDDATE('1998-01-02', 31); -> '1998-02-02' ADDTIME(expr,expr2) ADDTIME()

aade expr2 a expr y retorna el resultado. expr es una expresin de fecha u hora y fecha, y expr2 es una expresin temporal.
mysql> SELECT ADDTIME('1997-12-31 23:59:59.999999', -> '1 1:1:1.000002'); -> '1998-01-02 01:01:01.000001' mysql> SELECT ADDTIME('01:00:00.999999', '02:00:00.999998'); -> '03:00:01.999997' CONVERT_TZ(dt,from_tz,to_tz) CONVERT_TZ() convierte un valor datetime dt de la zona horaria dada por from_tz a la zona horaria dada por to_tz y retorna el valor resultante. Las

zonas horarias pueden especificarse como se describe en Seccin 5.9.8, Soporte de zonas horarias en el servidor MySQL. Esta funcin retorna NULL si los argumentos son invlidos. Si el valor se sale del rango soportado por el tipo TIMESTAMP al convertirse de from_tz a UTC, no se realiza ninguna conversin. El rango TIMESTAMP se describe en Seccin 11.1.2, Panormica de tipos de fechas y hora.
mysql> SELECT CONVERT_TZ('2004-01-01 12:00:00','GMT','MET'); -> '2004-01-01 13:00:00'

mysql> SELECT CONVERT_TZ('2004-01-01 12:00:00','+00:00','+10:00'); -> '2004-01-01 22:00:00'

Nota: Para usar zonas horarias con nombres tales como 'MET' o 'Europe/Moscow', las tabas de zona horaria deben estar actualizadas correctamente. Consulte Seccin 5.9.8, Soporte de zonas horarias en el servidor MySQL para instrucciones.
CURDATE()

Retorna la fecha horaria como valor en formato 'YYYY-MM-DD' o YYYYMMDD, dependiendo de si la fucnin se usa en un contexto numrico o de cadena de caracteres.
mysql> SELECT CURDATE(); -> '1997-12-15' mysql> SELECT CURDATE() + 0; -> 19971215 CURRENT_DATE, CURRENT_DATE() CURRENT_DATE CURTIME()

y CURRENT_DATE() son sinnimos de CURDATE().

Retorna la hora actual como valor en formato 'HH:MM:SS' o HHMMSS dependiendo de si la fucnin se usa en un contexto numrico o de cadena de caracteres.
mysql> SELECT CURTIME(); -> '23:50:26' mysql> SELECT CURTIME() + 0; -> 235026 CURRENT_TIME, CURRENT_TIME() CURRENT_TIME

y CURRENT_TIME() son sinnimos de CURTIME().

CURRENT_TIMESTAMP, CURRENT_TIMESTAMP() CURRENT_TIMESTAMP()

son sinnimos de NOW().

DATE(expr)

Extrae la parte de fecha de la expresin de fecha o fecha y hora expr.


mysql> SELECT DATE('2003-12-31 01:02:03'); -> '2003-12-31' DATEDIFF(expr,expr2)

DATEDIFF() expr2. expr

retorna el nmero de das entre la fecha inicial expr y la fecha final y expr2 son expresiones de fecha o de fecha y hora. Slo las partes de fecha de los valores se usan en los clculos.
mysql> SELECT DATEDIFF('1997-12-31 23:59:59','1997-12-30'); -> 1 mysql> SELECT DATEDIFF('1997-11-30 23:59:59','1997-12-31'); -> -31 DATE_ADD(date,INTERVAL expr type), DATE_SUB(date,INTERVAL expr type)

Estas funciones realizan operaciones aritmticas de fechas. date es un valor DATETIME o DATE especificando la fecha de inicio. expr es una expresin que especifica el intervalo a aadir 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 cmo debe interpretarse la expresin. La palabra clave INTERVAL y el especificador type no son sensibles a maysculas. La siguiente tabla muestra cmo se relacionan los argumentos type y expr :
type

Value

Expected expr Format


MICROSECONDS SECONDS MINUTES HOURS DAYS WEEKS MONTHS QUARTERS YEARS

MICROSECOND SECOND MINUTE HOUR DAY WEEK MONTH QUARTER YEAR

SECOND_MICROSECOND 'SECONDS.MICROSECONDS' MINUTE_MICROSECOND 'MINUTES.MICROSECONDS' MINUTE_SECOND HOUR_MICROSECOND HOUR_SECOND HOUR_MINUTE DAY_MICROSECOND DAY_SECOND DAY_MINUTE DAY_HOUR YEAR_MONTH 'MINUTES:SECONDS' 'HOURS.MICROSECONDS' 'HOURS:MINUTES:SECONDS' 'HOURS:MINUTES' 'DAYS.MICROSECONDS' 'DAYS HOURS:MINUTES:SECONDS' 'DAYS HOURS:MINUTES' 'DAYS HOURS' 'YEARS-MONTHS'

Los valores QUARTER y WEEK estn disponibles a partir de MySQL 5.0.0.

MySQL permite cualquier delimitador en el formato expr . Los mostrados en la tabla son sugerencias. Si el argumento date es un valora DATE y sus clculos involucarn slo partes YEAR, MONTH, y DAY (esto es, sin partes de hora), el resultado es un valor DATE . De otro modo, el resultado es un valor DATETIME .
INTERVAL expr type

se permite en cualquier lado del operador + si la expresin en el otro lado es una fecha o fecha y hora. Para el operador - , INTERVAL expr type se permite slo en la parte derecha, ya que no tiene sentido restar una fecha de un intervalo. (Consulte los ejemplos a continuacin.)
mysql> SELECT '1997-12-31 23:59:59' + INTERVAL 1 SECOND; -> '1998-01-01 00:00:00' mysql> SELECT INTERVAL 1 DAY + '1997-12-31'; -> '1998-01-01' mysql> SELECT '1998-01-01' - INTERVAL 1 SECOND; -> '1997-12-31 23:59:59' mysql> SELECT DATE_ADD('1997-12-31 23:59:59', -> INTERVAL 1 SECOND); -> '1998-01-01 00:00:00' mysql> SELECT DATE_ADD('1997-12-31 23:59:59', -> INTERVAL 1 DAY); -> '1998-01-01 23:59:59' mysql> SELECT DATE_ADD('1997-12-31 23:59:59', -> INTERVAL '1:1' MINUTE_SECOND); -> '1998-01-01 00:01:00' mysql> SELECT DATE_SUB('1998-01-01 00:00:00', -> INTERVAL '1 1:1:1' DAY_SECOND); -> '1997-12-30 22:58:59' mysql> SELECT DATE_ADD('1998-01-01 00:00:00', -> INTERVAL '-1 10' DAY_HOUR); -> '1997-12-30 14:00:00' mysql> SELECT DATE_SUB('1998-01-02', INTERVAL 31 DAY); -> '1997-12-02' mysql> SELECT DATE_ADD('1992-12-31 23:59:59.000002', -> INTERVAL '1.999999' SECOND_MICROSECOND); -> '1993-01-01 00:00:01.000001'

Si especifica un intervalo demasiado pequeo (no incluye todas las partes de intervalo que se esperaran de la palabra clave type ), MySQL asume que ha dejado la parte ms a la izquierda del valor del intervalo. Por ejemplo, si especifica un type de DAY_SECOND, se espera que el valor de expr tenga das, horas, minutos y segundos. Si especifica un valor como '1:10', MySQL asume que las partes de da 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 anlogo a la forma en que MySQL interpreta valores TIME como representando tiempo transcurrido en lugar de la hora del da. Si suma o borra de un valor de fecha algo que contenga una parte de fora, el resultado se convierte automticamente a valor fecha/hora:
mysql> SELECT DATE_ADD('1999-01-01', INTERVAL 1 DAY); -> '1999-01-02' mysql> SELECT DATE_ADD('1999-01-01', INTERVAL 1 HOUR); -> '1999-01-01 01:00:00'

Si usa fechas muy mal formadas, el resultado es NULL. Si suma MONTH, YEAR_MONTH, o YEAR y la fecha resultante tiene un da mayor que el da mximo para el nuevo mes, el da se ajusta al nmero mximo del nuevo mes:
mysql> SELECT DATE_ADD('1998-01-30', INTERVAL 1 MONTH); -> '1998-02-28' DATE_FORMAT(date,format)

Formatea el valor date segn la cadena format . Los siguientes especificadores pueden usarse en la cadena format : Especificador Descripcin
%a %b %c %D %d %e %f %H %h %I %i %j %k %l %M %m %p %r %S %s %T %U %u %V %v %W

Da de semana abreviado (Sun..Sat) Mes abreviado (Jan..Dec) Mes, numrico (0..12) Da del mes con sufijo ingls (0th, 1st, 2nd, 3rd, ...) Da del mes numrico (00..31) Da del mes numrico (0..31) Microsegundos (000000..999999) Hora (00..23) Hora (01..12) Hora (01..12) Minutos, numrico (00..59) Da del ao (001..366) Hora (0..23) Hora (1..12) Nombre mes (January..December) Mes, numrico (00..12)
AM

o PM

Hora, 12 horas (hh:mm:ss seguido de AM o PM) Segundos (00..59) Segundos (00..59) Hora, 24 horas (hh:mm:ss) Semana (00..53), donde domingo es el primer da de la semana Semana (00..53), donde lunes es el primer da de la semana Semana (01..53), donde domingo es el primer da de la semana; usado con %X Semana (01..53), donde lunes es el primer da de la semana; usado con %x Nombre da semana (Sunday..Saturday)

%w %X %x %Y %y %%

Da de la semana (0=Sunday..6=Saturday) Ao para la semana donde domingo es el primer da de la semana, numrico, cuatro dgitos; usado con %V Ao para la semana, donde lunes es el primer da de la semana, numrico, cuatro dgitos; usado con %v Ao, numrico, cuatro dgitos Ao, numrico (dos dgitos) Carcter '%' literal

Todos los otros caracteres se copian al resultado sin interpretacin. Tenga en cuenta que el carcter '%' se necesita antes de caracteres especificadores de formato. Los rangos para los especificadores de mes y da comienzan en cero debido a que MySQL permite almacenar fechas incompletas tales como '2004-00-00'.
mysql> SELECT DATE_FORMAT('1997-10-04 22:23:00', '%W %M %Y'); -> 'Saturday October 1997' mysql> SELECT DATE_FORMAT('1997-10-04 22:23:00', '%H:%i:%s'); -> '22:23:00' mysql> SELECT DATE_FORMAT('1997-10-04 22:23:00', '%D %y %a %d %m %b %j'); -> '4th 97 Sat 04 10 Oct 277' mysql> SELECT DATE_FORMAT('1997-10-04 22:23:00', '%H %k %I %r %T %S %w'); -> '22 22 10 10:23:00 PM 22:23:00 00 6' mysql> SELECT DATE_FORMAT('1999-01-01', '%X %V'); -> '1998 52' DAY(date) DAY()

es sinnimo de DAYOFMONTH().

DAYNAME(date)

Retorna el nombre del da de la semana para date.


mysql> SELECT DAYNAME('1998-02-05'); -> 'Thursday' DAYOFMONTH(date)

Retorna el da del mes para date, en el rango 1 a 31.


mysql> SELECT DAYOFMONTH('1998-02-03'); -> 3 DAYOFWEEK(date)

Retorna el ndice del da de la semana para date (1 = domingo, 2 = lunes, ..., 7 = sbado). Estos valores del ndice se corresponden con el estndar ODBC.
mysql> SELECT DAYOFWEEK('1998-02-03'); -> 3 DAYOFYEAR(date)

Retorna el da del ao para date, en el rango 1 a 366.


mysql> SELECT DAYOFYEAR('1998-02-03'); -> 34 EXTRACT(type FROM date)

La funcin EXTRACT() usa la misma clase de especificadores de tipo que DATE_ADD() o DATE_SUB(), pero extrae partes de la fecha en lugar de realizar aritmtica de fecha.
mysql> SELECT EXTRACT(YEAR FROM '1999-07-02'); -> 1999 mysql> SELECT EXTRACT(YEAR_MONTH FROM '1999-07-02 01:02:03'); -> 199907 mysql> SELECT EXTRACT(DAY_MINUTE FROM '1999-07-02 01:02:03'); -> 20102 mysql> SELECT EXTRACT(MICROSECOND -> FROM '2003-01-02 10:30:00.000123'); -> 123 FROM_DAYS(N)

Dado un nmero de da N, retorna un valor DATE .


mysql> SELECT FROM_DAYS(729669); -> '1997-10-07'

Use FROM_DAYS() con precaucin en fechas viejas. No se pretende que se use con valores que precedan el calendario Gregoriano (1582). Consulte Seccin 12.6, Qu calendario utiliza MySQL.
FROM_UNIXTIME(unix_timestamp) , FROM_UNIXTIME(unix_timestamp,format)

Retorna una representacin del argumento unix_timestamp como un valor en formato 'YYYY-MM-DD HH:MM:SS' o YYYYMMDDHHMMSS , dependiendo de si la funcin se usa en un formato numrico o de cadena de caracteres.
mysql> SELECT FROM_UNIXTIME(875996580); -> '1997-10-04 22:23:00' mysql> SELECT FROM_UNIXTIME(875996580) + 0; -> 19971004222300

Si se da format, el resultado se formatea segn la cadena format. format puede contener los mismos especificadores que los listados en la entrada para la funcin DATE_FORMAT() .
mysql> SELECT FROM_UNIXTIME(UNIX_TIMESTAMP(), -> '%Y %D %M %h:%i:%s %x'); -> '2003 6th August 06:22:58 2003' GET_FORMAT(DATE|TIME|DATETIME, 'EUR'|'USA'|'JIS'|'ISO'|'INTERNAL')

Retorna una cadena de formato. Esta funcin es til en combinacin con las funciones DATE_FORMAT() y STR_TO_DATE() . Los tres valores posibles para el primer argumento y los cinco posibles valores para el segundo argumento resultan en 15 posibles cadenas de formato (para los especificadores usados, consulte la tabla en la descripcin de la funcin DATE_FORMAT() ). LLamad a funcin
GET_FORMAT(DATE,'USA') GET_FORMAT(DATE,'JIS') GET_FORMAT(DATE,'ISO') GET_FORMAT(DATE,'EUR') GET_FORMAT(DATE,'INTERNAL') GET_FORMAT(DATETIME,'USA') GET_FORMAT(DATETIME,'JIS') GET_FORMAT(DATETIME,'ISO') GET_FORMAT(DATETIME,'EUR') GET_FORMAT(TIME,'USA') GET_FORMAT(TIME,'JIS') GET_FORMAT(TIME,'ISO') GET_FORMAT(TIME,'EUR') GET_FORMAT(TIME,'INTERNAL')

Resultado
'%m.%d.%Y' '%Y-%m-%d' '%Y-%m-%d' '%d.%m.%Y' '%Y%m%d' '%Y-%m-%d-%H.%i.%s' '%Y-%m-%d %H:%i:%s' '%Y-%m-%d %H:%i:%s' '%Y-%m-%d-%H.%i.%s' '%h:%i:%s %p' '%H:%i:%s' '%H:%i:%s' '%H.%i.%S' '%H%i%s'

GET_FORMAT(DATETIME,'INTERNAL') '%Y%m%d%H%i%s'

El formato ISO es ISO 9075, no ISO 8601. En MySQL 5.0, TIMESTAMP puede usarse; GET_FORMAT() retorna los mismos valores que para DATETIME.
mysql> SELECT DATE_FORMAT('2003-10-03',GET_FORMAT(DATE,'EUR')); -> '03.10.2003' mysql> SELECT STR_TO_DATE('10.31.2003',GET_FORMAT(DATE,'USA')); -> '2003-10-31'

Consulte Seccin 13.5.3, Sintaxis de SET.


HOUR(time)

Retorna la hora para time. El rango del valor de retorno es 0 a 23 para valores de horas del da.
mysql> SELECT HOUR('10:05:03'); -> 10

Adems, el rango de los valores TIME es mucho mayor, as que HOUR puede retornar valores mayores que 23.
mysql> SELECT HOUR('272:59:59'); -> 272 LAST_DAY(date)

Toma una fecha o fecha/hora y retorna el valor correspondiente para el ltimo da del mes. Retorna NULL si el argumento es invlido.
mysql> SELECT LAST_DAY('2003-02-05'); -> '2003-02-28' mysql> SELECT LAST_DAY('2004-02-05'); -> '2004-02-29' mysql> SELECT LAST_DAY('2004-01-01 01:01:01'); -> '2004-01-31' mysql> SELECT LAST_DAY('2003-03-32'); -> NULL LOCALTIME, LOCALTIME() LOCALTIME

y LOCALTIME() son sinnimos de NOW().

LOCALTIMESTAMP, LOCALTIMESTAMP() LOCALTIMESTAMP

y LOCALTIMESTAMP() son sinnimos de NOW().

MAKEDATE(year,dayofyear)

Retorna una fecha, dado un ao y da del ao. dayofyear debe ser mayor a 0 o el resultado es NULL.
mysql> SELECT MAKEDATE(2001,31), MAKEDATE(2001,32); -> '2001-01-31', '2001-02-01' mysql> SELECT MAKEDATE(2001,365), MAKEDATE(2004,365); -> '2001-12-31', '2004-12-30' mysql> SELECT MAKEDATE(2001,0); -> NULL MAKETIME(hour,minute,second)

Retorna un valor horario calculado a partir de los argumentos hour, minute, y second .
mysql> SELECT MAKETIME(12,15,30); -> '12:15:30' MICROSECOND(expr)

Retorna los microsegundos a partir del a expresin de hora o fecha/hora expr como nmero en el rango de 0 a 999999.
mysql> SELECT MICROSECOND('12:00:00.123456'); -> 123456 mysql> SELECT MICROSECOND('1997-12-31 23:59:59.000010'); -> 10 MINUTE(time)

Retorna el minuto de time, en el rango 0 a 59.


mysql> SELECT MINUTE('98-02-03 10:05:03'); -> 5 MONTH(date)

Retorna el mes para date, en el rango 1 a 12.


mysql> SELECT MONTH('1998-02-03'); -> 2 MONTHNAME(date)

Retorna el nombre completo del mes para date.


mysql> SELECT MONTHNAME('1998-02-05'); -> 'February' NOW()

Retorna la fecha y hora actual como valor en formato 'YYYY-MM-DD HH:MM:SS' o YYYYMMDDHHMMSS , dependiendo de si la funcin se usa en contexto numrico o de cadena de caracteres.
mysql> SELECT NOW(); -> '1997-12-15 23:50:26' mysql> SELECT NOW() + 0; -> 19971215235026 PERIOD_ADD(P,N)

Aade N meses al periodo P (en el formato YYMM o YYYYMM). Retorna un valor en el formato YYYYMM. Tenga en cuenta que el argumento del periodo P no es una fecha.

mysql> SELECT PERIOD_ADD(9801,2); -> 199803 PERIOD_DIFF(P1,P2)

Retorna el nmero de meses entre periodos P1 y P2. P1 y P2 deben estar en el formato YYMM o YYYYMM. Tenga en cuenta que los argumentos del periodo P1 y P2 no son fechas.
mysql> SELECT PERIOD_DIFF(9802,199703); -> 11 QUARTER(date)

Retorna el cuarto del ao para date, en el rango 1 a 4.


mysql> SELECT QUARTER('98-04-01'); -> 2 SECOND(time)

Retorna el segundo para time, en el rango 0 a 59.


mysql> SELECT SECOND('10:05:03'); -> 3 SEC_TO_TIME(seconds)

Retorna el argumento seconds , convertido a horas, minutos y segundos, como un valor en formato 'HH:MM:SS' o HHMMSS, dependiendo de si la funcin se usa en contexto numrico o de cadena de caracteres.
mysql> SELECT SEC_TO_TIME(2378); -> '00:39:38' mysql> SELECT SEC_TO_TIME(2378) + 0; -> 3938 STR_TO_DATE(str,format)

Esta es la inversa de la funcin DATE_FORMAT(). Toma la cadena str y la cadena de formato format. STR_TO_DATE() retorna un valor DATETIME si la cadena de formato contiene parte de fecha y hora, o un valor DATE o TIME si la cadena contiene slo parte de fecha u hora. Los valores fecha, hora o fecha/hora contenidos en str deben ser dados en el formato indicado por format. Para los especificadores que pueden usarse en format, consulte la tabla en la descripcin de la funcin DATE_FORMAT() . Todos los otros caracteres no se interpretan. Si str contiene un valor fecha, hora o fecha/hora ilegal, STR_TO_DATE() retorna NULL. A partir de MySQL 5.0.3, un valor ilegal tambin produce una advertencia.

mysql> SELECT STR_TO_DATE('03.10.2003 09.20','%d.%m.%Y %H.%i'); -> '2003-10-03 09:20:00' mysql> SELECT STR_TO_DATE('10arp', '%carp'); -> '0000-10-00 00:00:00' mysql> SELECT STR_TO_DATE('2003-15-10 00:00:00','%Y-%m-%d %H:%i:%s'); -> NULL

El chequeo de rango en las partes de los valores de fecha se describe en Seccin 11.3.1, Los tipos de datos DATETIME, DATE y TIMESTAMP. Esto significa, por ejemplo, que una fecha con una parte de da mayor que el nmero de das en un mes se permite mientras la parte del da est en el rango de 1 a 31. Tambin, fechas cero o fechas con partes de 0 se permiten.
mysql> SELECT STR_TO_DATE('00/00/0000', '%m/%d/%Y'); -> '0000-00-00' mysql> SELECT STR_TO_DATE('04/31/2004', '%m/%d/%Y'); -> '2004-04-31' SUBDATE(date,INTERVAL expr type), SUBDATE(expr,days)

Cuando se invoca con la forma INTERVAL del segundo argumento, SUBDATE() es sinnimo de DATE_SUB(). Para informacin del argumento INTERVAL , consulte la discusin para DATE_ADD().
mysql> SELECT DATE_SUB('1998-01-02', INTERVAL 31 DAY); -> '1997-12-02' mysql> SELECT SUBDATE('1998-01-02', INTERVAL 31 DAY); -> '1997-12-02'

La siguiente forma permite el uso de un valor entero para days. En tales casos, es el nmero de das a ser borrados de la expresin fecha o fecha/hora expr.
mysql> SELECT SUBDATE('1998-01-02 12:00:00', 31); -> '1997-12-02 12:00:00'

Nota no puede usar formato "%X%V" para convertir una cadena ao-semana en fecha ya que la combinacin de un ao y semana no identific unvocamente un ao y semana si la semana atraviesa la forntera de un mes. Para convertir un ao-semana a fecha, debe especificar el da de la semana:
mysql> select str_to_date('200442 Monday', '%X%V %W'); -> 2004-10-18 SUBTIME(expr,expr2) SUBTIME()

resta expr2 de expr y retorna el resultado. expr es una expresin de hora o fecha/hora, y expr2 es una expresin de hora.
mysql> SELECT SUBTIME('1997-12-31 23:59:59.999999','1 1:1:1.000002'); -> '1997-12-30 22:58:58.999997' mysql> SELECT SUBTIME('01:00:00.999999', '02:00:00.999998'); -> '-00:59:59.999999'

SYSDATE() SYSDATE()

es sinnimo de NOW().

TIME(expr)

Extrae la parte de hora de la expresin hora o fecha/hora expr.


mysql> SELECT TIME('2003-12-31 01:02:03'); -> '01:02:03' mysql> SELECT TIME('2003-12-31 01:02:03.000123'); -> '01:02:03.000123' TIMEDIFF(expr,expr2) TIMEDIFF() retorna el tiempo entre la hora de inicio expr y la hora final expr2. expr y expr2 son expresiones de hora o de fecha/hora, pero ambas deben ser del

mismo tipo.
mysql> SELECT TIMEDIFF('2000:01:01 -> '2000:01:01 -> '-00:00:00.000001' mysql> SELECT TIMEDIFF('1997-12-31 -> '1997-12-30 -> '46:58:57.999999' 00:00:00', 00:00:00.000001'); 23:59:59.000001', 01:01:01.000002');

TIMESTAMP(expr) , TIMESTAMP(expr,expr2)

Con un nico argumento, esta funcin retorna la expresin de fecha o fecha/hora expr como valor fecha/hora. Con dos argumentos, suma la expresin de hora expr2 a la expresin de fecha o de fecha/hora expr y retorna el resultado como valor fecha/hora.
mysql> SELECT TIMESTAMP('2003-12-31'); -> '2003-12-31 00:00:00' mysql> SELECT TIMESTAMP('2003-12-31 12:00:00','12:00:00'); -> '2004-01-01 00:00:00' TIMESTAMPADD(interval,int_expr,datetime_expr)

Suma la expresin entera int_expr a la expresin de fecha o de fecha/hora datetime_expr. La unidad for int_expr la da el 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 legales.
mysql> SELECT TIMESTAMPADD(MINUTE,1,'2003-01-02'); -> '2003-01-02 00:01:00' mysql> SELECT TIMESTAMPADD(WEEK,1,'2003-01-02'); -> '2003-01-09'

TIMESTAMPADD()

est disponible desde MySQL 5.0.0.

TIMESTAMPDIFF(interval,datetime_expr1,datetime_expr2)

Retorna la diferencia entera entre las expresiones de fecha o de fecha/hora datetime_expr1 y datetime_expr2. La unidad del resultado se da en el argumento interval. Los valores legales para interval son los mismos que los listados en la descripcin de la funcin TIMESTAMPADD() .
mysql> SELECT TIMESTAMPDIFF(MONTH,'2003-02-01','2003-05-01'); -> 3 mysql> SELECT TIMESTAMPDIFF(YEAR,'2002-05-01','2001-01-01'); -> -1 TIMESTAMPDIFF()

est disponible desde MySQL 5.0.0.

TIME_FORMAT(time,format)

Se usa como la funcin DATE_FORMAT() pero la cadena format puede contener slo los especificadores de formato que tratan horas, minutos y segundos. Otros especificadores producen un valor NULL o 0. Si el valor time contiene una parte horaria mayor que 23, los especificadores de formato horario %H y %k producen un valor mayor que el rango usual de 0..23. Los otros especificadores de hora producen la hora modulo 12.
mysql> SELECT TIME_FORMAT('100:00:00', '%H %k %h %I %l'); -> '100 100 04 04 4' TIME_TO_SEC(time)

Retorna el argumento time convertido en segundos.


mysql> SELECT TIME_TO_SEC('22:23:00'); -> 80580 mysql> SELECT TIME_TO_SEC('00:39:38'); -> 2378 TO_DAYS(date)

Dada la fecha date, retorna un nmero de da (el nmero de dias desde el ao 0).
mysql> SELECT TO_DAYS(950501); -> 728779 mysql> SELECT TO_DAYS('1997-10-07'); -> 729669 TO_DAYS()

no est pensado para usarse con valores anteriores al calendario Gregoriano (1582), ya que no tiene en cuenta los das perdidos cuando se cambi el calendario. Consulte Seccin 12.6, Qu calendario utiliza MySQL.

Recuerde que MySQL convierte aos de dos dgitos en fechas de cuatro dgitos usando las reglas en Seccin 11.3, Tipos de fecha y hora. Por ejemplo, '199710-07' y '97-10-07' se consideran fechas idnticas:
mysql> SELECT TO_DAYS('1997-10-07'), TO_DAYS('97-10-07'); -> 729669, 729669

Para fechas anteriores a 1582 (y posiblemente un ao posterior en otras localizaciones), los resultados de esta funcin no son fiables. Consulte Seccin 12.6, Qu calendario utiliza MySQL para ms detalles.
UNIX_TIMESTAMP(), UNIX_TIMESTAMP(date)

Si se llama sin argumentos, retorna el timestamp de Unix (segundos desde '1970-01-01 00:00:00' GMT) como entero sin signo. Si se llama a UNIX_TIMESTAMP() con un argumento date , retorna el valor del argumento como segundos desde '1970-01-01 00:00:00' GMT. date puede ser una cadena DATE , una cadena DATETIME , un TIMESTAMP, o un nmero en el formato YYMMDD o YYYYMMDD en hora local.
mysql> SELECT UNIX_TIMESTAMP(); -> 882226357 mysql> SELECT UNIX_TIMESTAMP('1997-10-04 22:23:00'); -> 875996580

Cuando se usa UNIX_TIMESTAMP en una columna TIMESTAMP , la funcin retorna el valor del timestamp interno directamente, sin conversin implcita string-toUnix-timestamp . Si pasa una fecha fuera de rango a UNIX_TIMESTAMP(), retorna 0, pero tenga en cuenta que slo se hace un chequeo de rango bsico (ao de 1970 a 2037, mes de 01 a 12, da de 01 a 31). Si quiere restar columnas UNIX_TIMESTAMP() puede querer convertir el resultado a enteros sin signo. Consulte Seccin 12.8, Funciones y operadores de cast.
UTC_DATE, UTC_DATE()

Retorna la fecha UTC actual como valor en formato 'YYYY-MM-DD' o YYYYMMDD, dependiendo si la funcin se usa en un contexto numrico o de cadenas de caracteres.
mysql> SELECT UTC_DATE(), UTC_DATE() + 0; -> '2003-08-14', 20030814 UTC_TIME, UTC_TIME()

Retorna la hora UTC actual como valor en formato 'HH:MM:SS' or HHMMSS dependiendo si la funcin se usa en un contexto numrico o de cadenas de caracteres.
mysql> SELECT UTC_TIME(), UTC_TIME() + 0;

-> '18:07:53', 180753 UTC_TIMESTAMP, UTC_TIMESTAMP()

Retorna la fecha y hora UTC actual como valor en formato 'YYYY-MM-DD HH:MM:SS' o YYYYMMDDHHMMSS dependiendo si la funcin se usa en un contexto numrico o de cadenas de caracteres.
mysql> SELECT UTC_TIMESTAMP(), UTC_TIMESTAMP() + 0; -> '2003-08-14 18:08:04', 20030814180804 WEEK(date[,mode])

Esta funcin retorna el nmero de semana para date. La forma de dos argumentos de WEEK() le permite especificar si la semana comienza en lunes o domingo y si el valor de retorno debe estar en el rango de 0 a 53 o de 1 a 53. Si el argumento mode se omite en MySQL 5.0, el valor de la variable de sistema default_week_format se usa. Consulte Seccin 5.3.3, Variables de sistema del servidor. La siguiente tabla describe cmo funciona el argumento mode : Primer da Modo de semana Rango Semana 1 es la primera semana... 0 1 2 3 4 5 6 7 Domingo Lunes Domingo Lunes Domingo Lunes Domingo Lunes 0-53 0-53 1-53 1-53 0-53 0-53 1-53 1-53 con un domingo en este ao con ms de 3 das este ao con un domingo este ao con ms de 3 das este ao con ms de 3 das este ao con un lunes en este ao con ms de 3 das este ao con un lunes en este ao

mysql> SELECT -> 7 mysql> SELECT -> 7 mysql> SELECT -> 8 mysql> SELECT -> 53

WEEK('1998-02-20'); WEEK('1998-02-20',0); WEEK('1998-02-20',1); WEEK('1998-12-31',1);

Tenga en cuenta que si una fecha cae en la ltima semana del ao prvio, MySQL retorna 0 si no usa 2, 3, 6, o 7 con el argumento opcional mode :
mysql> SELECT YEAR('2000-01-01'), WEEK('2000-01-01',0); -> 2000, 0

Se podra argumentar que MySQL debera retornar 52 para la funcin WEEK() , ya que la fecha dada ocurre en la 52a semana de 1999. Decidimos retornar 0 en

su lugar porque queramos que la funcin devolviera el nmero de semana en el ao dado. Esta hace uso de la funcin WEEK() fiable combinada con otras funciones que extraen una parte de fecha de una fecha. Si prefiere que el resultado a ser evaluado respecto al ao que contiene el primer da de la semana para la fecha dada, debe usar 0, 2, 5, o 7 como el argumento mode opcional.
mysql> SELECT WEEK('2000-01-01',2); -> 52

Alternativamente, use la funcin YEARWEEK():


mysql> SELECT YEARWEEK('2000-01-01'); -> 199952 mysql> SELECT MID(YEARWEEK('2000-01-01'),5,2); -> '52' WEEKDAY(date)

Retorna el ndice de das de la semana para date (0 = lunes, 1 = martes, ... 6 = domingo).
mysql> SELECT WEEKDAY('1998-02-03 22:23:00'); -> 1 mysql> SELECT WEEKDAY('1997-11-05'); -> 2 WEEKOFYEAR(date)

Retorna la semana de la fecha como nmero del rango 1 a 53. Esta es una funcin de compatibilidad equivalente a WEEK(date,3).
mysql> SELECT WEEKOFYEAR('1998-02-20'); -> 8 YEAR(date)

Retorna el ao para date, en el rango 1000 a 9999.


mysql> SELECT YEAR('98-02-03'); -> 1998 YEARWEEK(date), YEARWEEK(date,start)

Retorna ao y semana para una fecha. El argumento start funciona exactamente como el argumento start de WEEK(). El ao en el resultado puede ser diferente del ao en el argumento fecha para la primera y ltima semana del ao.
mysql> SELECT YEARWEEK('1987-01-01'); -> 198653

Tenga en cuenta que el nmero de semana es diferente de lo que la funcin WEEK() retornara (0) para argumentos opcionales 0 o 1, como WEEK() retorna la semana en el contexto del ao dado.

También podría gustarte