mysql datatype to store month and year only [closed]
I'm writing a PHP application that will store STUDENT
data in a MySQL relational database. I'm trying to find the best way / datatype to store a month and year together without the day.
I don't know whether I should just store it as a DATE and use PHP someway to just store the day as the 1-st or use a different datatype that I'm not currently familiar with. Ideally, I do not want to store a day, because the day will not always be the same and would require changing PHP source code if the day changed in the future.
Just for more background info, I'm storing a STUDENT's INTENT_TO_GRAD
. The client seems to only want this information as a reference or a visual for a report as opposed to using it for data manipulation. In other words, the only functional requirement for this data is to be displayed in a report.
Solution 1:
Why bother? Just store it as a complete date (perhaps always using the first as the day) and use the database functions MONTH()
and YEAR()
if you only need part of it. This makes using that field much easier as you can still do range queries, etc.
Solution 2:
It says in the MySQL manual that you can store partial dates
http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html#function_date-format
Ranges for the month and day specifiers begin with zero due to the fact that MySQL permits the storing of incomplete dates such as '2014-00-00'.
This means that to store the year and month only, you can use a DATE
column and put 00
instead of the day. e.g 2013-12-00
.
Related: Store incomplete date in MySQL date field