tipo de datos mysql para almacenar mes y año solamente

Estoy escribiendo una aplicación php que almacenará los datos del ESTUDIANTE en una database relacional de MySQL. Estoy tratando de encontrar la mejor forma / tipo de datos para almacenar un mes y año juntos sin el día. No sé si debería savelo como DATE y usar php de alguna manera para almacenar el día como el primero o usar otro tipo de datos con el que no esté familiarizado. Idealmente, no quiero almacenar un día, porque el día no siempre será el mismo y requeriría cambiar el código fuente de php si el día cambiara en el futuro.

Solo para get más información de antecedentes, estoy almacenando INTENT_TO_GRAD de un ESTUDIANTE. El cliente parece querer solo esta información como reference o visual para un informe en lugar de usarla para la manipulación de datos. En otras palabras, el único requisito funcional para estos datos debe mostrarse en un informe.

¿Por qué molestarse? Simplemente guárdelo como una date completa (tal vez siempre usando el primero como día) y use las funciones de la database MONTH() y YEAR() si solo necesita una parte. Esto hace que usar ese campo sea mucho más fácil ya que aún puede hacer consultas de range, etc.

Dice en el manual de MySQL que puedes almacenar dates parciales

http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html#function_date-format

Los ranges para los especificadores de mes y día comienzan con cero debido a que MySQL permite el almacenamiento de dates incompletas como '2014-00-00'.

Esto significa que para almacenar el año y el mes solamente, puede usar una columna DATE y poner 00 lugar del día. por ejemplo, 2013-12-00 .

Relacionado: Almacenar date incompleta en el campo de date de MySQL

Considere cómo va a usar los datos. Si hay algún informe que debe crear, ¿de qué forma podría recuperar y trabajar con los datos más fácilmente?

Y no tiene que usar un campo de tipo de date. Podría simplemente tener un campo Año y un campo Mes que son ambos integers. Entonces, cuando realmente necesitas hacer cualquier tipo de expresión que requiera una date, es bastante fácil juntarlas y lanzarlas a una cita.

Y almacenar como una date con el número del día como 1 y simplemente ignorarlo está perfectamente bien y es bastante normal también. Al final, esta no es una decisión que va a importar mucho (en términos relativos), así que simplemente elegiría la que más te guste y la terminaré.

Yo almacenaría los dos como dos columnas separadas como integers. Sería una torta de validation y permitiría una sorting rápida y fácil y posibilidades de agrupación.

 SELECT * FROM Users WHERE MONTH(DateTime) = '07' AND YEAR(DateTime) = '2015' AND DAY(DateTime) = '26' 

puede filtrar como se muestra arriba, pero aún así, si desea almacenar año / mes y día por separado, es inútil hasta que aplique la indexing y sus datos muy grandes.

Puede usar el tipo de datos VARCHAR para almacenar mes y año solamente.

Para quienes usan datepicker : –

1) Establecer el tipo de datos VARCHAR en mysql para almacenar mes y año.

2) Si está utilizando la validation de jquery y tiene el selector de date de jquery plugin, entonces tiene que hacer el código siguiente.

Por ejemplo: –

 <script> $(document).ready(function (){ $('#monthyear').datepicker({ autoclose:true, format:'mm-yy' }); //Your form validation code here// }); </script>