<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Codigolinea &#187; fechas</title>
	<atom:link href="http://codigolinea.com/tag/fechas/feed/" rel="self" type="application/rss+xml" />
	<link>http://codigolinea.com</link>
	<description>free programing</description>
	<lastBuildDate>Sun, 13 Feb 2011 23:56:17 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1</generator>
		<item>
		<title>Insertando Fechas con Diferente Formato en MySQL</title>
		<link>http://codigolinea.com/2009/04/10/insertando-fechas-con-diferente-formato-en-mysql/</link>
		<comments>http://codigolinea.com/2009/04/10/insertando-fechas-con-diferente-formato-en-mysql/#comments</comments>
		<pubDate>Sat, 11 Apr 2009 02:43:06 +0000</pubDate>
		<dc:creator>Benjamín</dc:creator>
				<category><![CDATA[MySql]]></category>
		<category><![CDATA[Añadir etiqueta nueva]]></category>
		<category><![CDATA[fechas]]></category>
		<category><![CDATA[GET_FORMAT]]></category>
		<category><![CDATA[ISO 8601]]></category>
		<category><![CDATA[STR_TO_DATE]]></category>

		<guid isPermaLink="false">http://codigolinea.com/?p=56</guid>
		<description><![CDATA[MySql cuando almacena una fecha lo hace deacuerdo a la norma ISO 8601 esto es YYYY-mm-dd. ¿Por que MySql Almacena fecha en ese formato? La explicación es muy amplia y no lo trataremos ahora, pero lo podemos resumir en los siguientes puntos: - Evitar formatos ambiguos - Tener un formato único y universal - Poder [...]]]></description>
			<content:encoded><![CDATA[<p>MySql cuando almacena una fecha lo hace deacuerdo a la norma  <a href="http://es.wikipedia.org/wiki/ISO_8601">ISO 8601</a> esto es  YYYY-mm-dd.</p>
<p><strong>¿Por que MySql Almacena fecha en ese formato?</strong><br />
La explicación es muy amplia y no lo trataremos ahora, pero lo podemos resumir en los siguientes puntos:<br />
- Evitar formatos ambiguos<br />
- Tener un formato único y universal<br />
- Poder ser organizados de más a menos significativo<br />
- Estar en  formato ordenable, incluso si tratáramos  a las fechas como cadenas de texto, podríamos ordenarlas alfabéticamente.</p>
<p>Si ingresamos una fecha que no cumpla con ese formato, simplemente provocará un error, ya que no sera recocido como fecha válida.</p>
<p><strong>¿Como podemos solucionar esto?</strong><br />
Mysql Contiene una función llamada <strong><a href="http://dev.mysql.com/doc/refman/6.0/en/date-and-time-functions.html#function_get-format">GET_FORMAT</a></strong> con el cual podemos insertar fechas con distinto formato, solo le tenemos que indicar en que formato estamos recibiendo la fecha para que MySQL luego lo procese.</p>
<p>Los formatos que acepta <strong><a href="http://dev.mysql.com/doc/refman/6.0/en/date-and-time-functions.html#function_get-format">GET_FORMAT</a></strong> son los siguientes</p>
<table class="tblfrm" border="0" cellspacing="3" cellpadding="0" width="400" bordercolor="#d3e0eb">
<tbody>
<tr>
<td bgcolor="#d3e0eb"><strong>Llamada función</strong></td>
<td bgcolor="#d3e0eb"><strong>Resultado</strong></td>
</tr>
<tr>
<td bgcolor="#d3e0eb">GET_FORMAT(DATE,&#8217;USA&#8217;)</td>
<td bgcolor="#d3e0eb">&#8216;%m.%d.%Y&#8217;</td>
</tr>
<tr>
<td bgcolor="#d3e0eb">GET_FORMAT(DATE,&#8217;JIS&#8217;)</td>
<td bgcolor="#d3e0eb">&#8216;%Y-%m-%d&#8217;</td>
</tr>
<tr>
<td bgcolor="#d3e0eb">GET_FORMAT(DATE,&#8217;ISO&#8217;)</td>
<td bgcolor="#d3e0eb">&#8216;%Y-%m-%d&#8217;</td>
</tr>
<tr>
<td bgcolor="#d3e0eb">GET_FORMAT(DATE,&#8217;EUR&#8217;)</td>
<td bgcolor="#d3e0eb">&#8216;%d.%m.%Y&#8217;</td>
</tr>
<tr>
<td bgcolor="#d3e0eb">GET_FORMAT(DATE,&#8217;INTERNAL&#8217;)</td>
<td bgcolor="#d3e0eb">&#8216;%Y%m%d&#8217;</td>
</tr>
<tr>
<td bgcolor="#d3e0eb">GET_FORMAT(DATETIME,&#8217;USA&#8217;)</td>
<td bgcolor="#d3e0eb">&#8216;%Y-%m-%d %H.%i.%s&#8217;</td>
</tr>
<tr>
<td bgcolor="#d3e0eb">GET_FORMAT(DATETIME,&#8217;JIS&#8217;)</td>
<td bgcolor="#d3e0eb">&#8216;%Y-%m-%d %H:%i:%s&#8217;</td>
</tr>
<tr>
<td bgcolor="#d3e0eb">GET_FORMAT(DATETIME,&#8217;ISO&#8217;)</td>
<td bgcolor="#d3e0eb">&#8216;%Y-%m-%d %H:%i:%s&#8217;</td>
</tr>
<tr>
<td bgcolor="#d3e0eb">GET_FORMAT(DATETIME,&#8217;EUR&#8217;)</td>
<td bgcolor="#d3e0eb">&#8216;%Y-%m-%d %H.%i.%s&#8217;</td>
</tr>
<tr>
<td bgcolor="#d3e0eb">GET_FORMAT(DATETIME,&#8217;INTERNAL&#8217;)</td>
<td bgcolor="#d3e0eb">&#8216;%Y%m%d%H%i%s&#8217;</td>
</tr>
<tr>
<td bgcolor="#d3e0eb">GET_FORMAT(TIME,&#8217;USA&#8217;)</td>
<td bgcolor="#d3e0eb">&#8216;%h:%i:%s %p&#8217;</td>
</tr>
<tr>
<td bgcolor="#d3e0eb">GET_FORMAT(TIME,&#8217;JIS&#8217;)</td>
<td bgcolor="#d3e0eb">&#8216;%H:%i:%s&#8217;</td>
</tr>
<tr>
<td bgcolor="#d3e0eb">GET_FORMAT(TIME,&#8217;ISO&#8217;)</td>
<td bgcolor="#d3e0eb">&#8216;%H:%i:%s&#8217;</td>
</tr>
<tr>
<td bgcolor="#d3e0eb">GET_FORMAT(TIME,&#8217;EUR&#8217;)</td>
<td bgcolor="#d3e0eb">&#8216;%H.%i.%s&#8217;</td>
</tr>
<tr>
<td bgcolor="#d3e0eb">GET_FORMAT(TIME,&#8217;INTERNAL&#8217;)</td>
<td bgcolor="#d3e0eb">&#8216;%H%i%s&#8217;</td>
</tr>
</tbody>
</table>
<p>Para demostrar el uso de esta función voy a crear una tabla:</p>
<pre class="brush: sql; title: ;">
CREATE TABLE `demo` (
`id` int(11) NOT NULL auto_increment,
`fecha` date default NULL,
PRIMARY KEY  (`id`)
) ENGINE=InnoDB
</pre>
<p>Supongamos que recibimos un fecha con el siguiente formato  <strong>15/01/2005 (dd/mm/YYYY). </strong>. Esto lo insertaremos de la siguiente manera.</p>
<pre class="brush: sql; title: ;">
INSERT INTO demo (fecha)
VALUES (STR_TO_DATE(REPLACE('15/01/2005','/','.') ,GET_FORMAT(date,'EUR')))
</pre>
<p>Explicaré lo que hace la sentencia<br />
Convertimos la cadena de texto a un formato fecha con <strong>STR_TO_DATE</strong>.<br />
Usamos <strong>REPLACE</strong> para  reemplazamos las barras por el punto (.), según nuestra tabla de formatos.<br />
Con <strong>GET_FORMAT(date,&#8217;EUR&#8217;) </strong> le decimos al mysql que la fecha que vamos ingresar esta en formato europeo</p>
<p>Probemos con otra fecha, insertaremos una fecha con el siguiente formato <strong>10.31.2003 (mm.dd.YYYY)</strong></p>
<pre class="brush: sql; title: ;">
INSERT INTO demo (fecha)
VALUES (STR_TO_DATE('10.31.2003' ,GET_FORMAT(date,'USA')))
</pre>
<p>Verificamos nuestros datos insertados, y vemos que esta en el formato estándar.</p>
<pre class="brush: sql; title: ;">
mysql&gt; select * from demo;
+----+------------+
| id | fecha      |
+----+------------+
|  1 | 2005-01-15 |
|  2 | 2003-10-31 |
+----+------------+
2 rows in set (0.00 sec)
</pre>
<p>Espero que les sea de mucha utilidad y les evite muchos dolores de cabeza.</p>
<p>Hasta la próxima!</p>
]]></content:encoded>
			<wfw:commentRss>http://codigolinea.com/2009/04/10/insertando-fechas-con-diferente-formato-en-mysql/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
<!-- WP Super Cache is installed but broken. The path to wp-cache-phase1.php in wp-content/advanced-cache.php must be fixed! -->
