В много случаи се нуждаем от такива „повече или по-малко точни“ дати и аз използвам такива дати като 2011-04-01
(точно), както и 2011-04
(=април 2011 г.) и 2011
(дата само за година) в метаданните на архивите. Както го споменавате, полето за дата на MySQL толерира '2011-00-00', въпреки че няма често задавани въпроси и е добре.
Но тогава трябваше да взаимодействам с MySQL database
чрез ODBC
и полетата за дата са правилно преведени, с изключение на 'толерираните' дати (напр.:'2011-04-00' резултати са празни в получената база данни ACCESS, свързана с MySQL-ODBC.
По тази причина стигнах до заключението, че полето за дата на MySQL може да се преобразува в обикновен VARCHAR(10)
поле :Докато не се нуждаем от специфични MySQL функции за дата, тя работи добре и разбира се, ние все още можем да използваме php функции за дата и вашата фина функция date_php2mysql().
Бих казал, че единственият случай, когато е необходимо поле за дата на MySQL, е когато човек се нуждае от сложни SQL заявки, използвайки MySQL
датата функционира в самата заявка. (Но такива заявки няма да работят повече за „повече или по-малко точни“ дати!...)
Заключение :За „повече или по-малко точни“ дати, в момента отхвърлям полето за дата на MySQL и използвам обикновен VARCHAR(10)
поле с aaaa-mm-jj
форматирани данни. Простото е красиво.