The date tag in MusicBrainz should be a date(YYYY-MM-DD), but in a more general case, like ID3v1, it simply means year(YYYY). So the problem came when I edited and save the music tag using MusicBrainz online database, the date tag will be a date, which my phone and other device couldn’t recognized. My phone regards the date tag in MusicBrainz as the value of year.
I don’t know the standards and I don’t konw which one is right. But this small thing confused me a lot.
For ID3v2.3 there are two separate tags, one that holds the year (TYER), and one that holds month + day (TDAT). So probably your phone is just reading the TYER field.
For ID3v1 it would indeed only be a year, but I doubt your phone uses this, or if it does only as a fallback in case the ID3v2 tag has no data.
But even if you have ID3v2.4, which has a single field for the whole date, it can still be that a player decides to only display the year.
“Standards” means everyone reads it in their own way. Issues like this are down to different players reading different standards. My Android devices also get fussy about track numbers on multi-CD releases.
When I am going to copy music to my phone, I fix stuff like this by copying files to separate folder first.
I can then hit them with MP3TAG to bulk adjust misbehaving tags.
That way I have correct files in my library, but tweaked files compliant to the various apps on those devices.