Formato de fecha MySQL

Cuando hago una tabla y creo un campo de tipo fecha en mysql, almacena la fecha como 0000-00-00 ¿Es posible cambiar el formato a ‘dm-Y’?

Ir a la referencia de MySQL – 10.5. Requisitos de almacenamiento del tipo de datos

Buscar: requisitos de almacenamiento para tipos de fecha y hora

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 para mostrar , tiene que mostrarse de alguna manera, por lo que sale como 0000-00-00 No se almacena 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 está utilizando la consulta en una herramienta de progtwigción, esto no es lo que quiere hacer. Si desea el valor de fecha sin formato, para fines de visualización, habrá una función de formato similar en cualquier entorno de progtwigción que utilice.

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

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

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

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

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 desde la aplicación o directamente con una consulta:

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

Puedes hacer esto usando SQL

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

O si está utilizando PHP puede lograr los mismos resultados:

 echo date('dm-Y', $originalDate); //You will get something like 09-08-2013 (Aug 8th, 2013) echo date('jn-y', $originalDate); //You will get something like 9-8-13 (Aug 8th, 2013) 

Veo el uso para ambos, pero me parece que este diseño es más útil como herramienta de referencia:

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

enter image description here