2011-03-20 35 views

Respuesta

12

Ir a MySQL Reference - 10.5. Data Type Storage Requirements

Buscar: Requisitos de almacenamiento de fecha y hora Tipos

las fechas se almacenan internamente como A three-byte integer packed as DD + MM×32 + YYYY×16×32

Pero, si selecciona una columna de fecha de pantalla, tiene que mostrarse en alguna forma, por lo que co mes out como 0000-00-00 Es no almacenado como un char (10) con ese formato específico.

Si, para visualizar, necesita ver un formato específico, puede convertirlo a VARCHAR en un formato específico usando Date_Format(). Sin embargo, tenga en cuenta que si utiliza la consulta en una herramienta de programación, esto es no lo que quiere hacer. Desea el valor de fecha sin procesar, para fines de visualización, habrá una función de formato similar en cualquier entorno de programación que utilice.

Como puede ver en la referencia en DATE_FORMAT, querrá usar '%d-%m-%Y', p. Ej.

SELECT col1, col2, DATE_FORMAT(datecolumn, '%d-%m-%Y') AS datecolumn, more1... 
FROM sometable 
.... 
2

No, no es posible mientras se mantiene como un campo de fecha. Le sugiero que lo mantenga en ese formato, para que pueda usar todas las funciones de fecha mysql, y lo cambie solo cuando lo muestre a los usuarios.

Puede hacerlo ya sea lado de la aplicación o directamente con una consulta:

SELECT DATE_FORMAT(date_field, "%d-%m-%Y") FROM ... 
+0

Tengo otra manera, puedo almacenar int tipo timestamp por strtotime() entonces puede ser utilizado con la función date(). No estoy seguro de que sea bueno. –

+1

Sí, pero una marca de tiempo int es totalmente ilegible. El formato predeterminado de mysql le permite comprender la fecha sin procesarla. Además, no puede usar funciones de fecha (para extraer día, mes, intervalos, etc.) si usa INTs –

5

No, no es posible. Pero puede usar DATE_FORMAT para seleccionar de esa manera.

SELECT Date_format(mydatefield, '%d-%m-%Y') 
FROM table 
+0

Ouh great. Entiendo. Gracias por todo –

0

Usted puede hacer esto utilizando SQL

SELECT DATE_FORMAT(date_field, "%d-%m-%Y") FROM ... 

O si está usando PHP que puede lograr los mismos resultados:

echo date('d-m-Y', $originalDate); //You will get something like 09-08-2013 (Aug 8th, 2013) 
echo date('j-n-y', $originalDate); //You will get something like 9-8-13 (Aug 8th, 2013) 
0

veo la utilización para ambos, pero me encuentra este diseño más útil como herramienta de referencia:

SELECT DATE_FORMAT('2004-01-20' ,'%Y-%m-01'); 

enter image description here