sql >> Database >  >> RDS >> Mysql

Optionele maand of dag in MySQL-datumveld van PHP

In veel gevallen hebben we zulke 'min of meer precieze' datums nodig, en ik gebruik datums als 2011-04-01 (precies), evenals 2011-04 (=april 2011) en 2011 (datum alleen voor het jaar) in metadata van archieven. Zoals je het zegt, het MySQL-datumveld tolereert '2011-00-00' hoewel er geen FAQ's over vertellen, en het is prima.
Maar toen moest ik de MySQL database koppelen via ODBC en de datumvelden zijn correct vertaald, behalve de 'getolereerde' datums (bijv. '2011-04-00' resultaten leeg in de resulterende MySQL-ODBC-verbonden ACCESS-database.
Om die reden kwam ik tot de conclusie dat het MySQL-datumveld kan worden omgezet in een gewone VARCHAR(10) field :Zolang we geen specifieke MySQL-datumfuncties nodig hebben, werkt het prima, en natuurlijk kunnen we nog steeds php-datumfuncties en je fijne date_php2mysql()-functie gebruiken.

Ik zou zeggen dat het enige geval waarin een MySQL-datumveld nodig is, is wanneer men complexe SQL-query's nodig heeft, met behulp van MySQL datumfuncties in de zoekopdracht zelf. (Maar dergelijke zoekopdrachten zouden niet meer werken op 'min of meer precieze' datums!...)

Conclusie :Voor 'min of meer precieze' datums negeer ik momenteel het MySQL-datumveld en gebruik ik gewoon VARCHAR(10) veldmet aaaa-mm-jj geformatteerde gegevens. Simpel is mooi.



  1. Hoe gegevens twee keer te bestellen. Maar maak de eerste bestellingBy ineffectief

  2. Een HTML-aanvinkvakje gebruiken om 1 of 0 in een MySQL-tabel te plaatsen

  3. Voeg twee kolommen samen, meerdere rijen en negeer duplicaten - MySQL

  4. Een script genereren op basis van een diagram in MySQL Workbench