2009-06-29 2 views
1

J'ai une table qui a trois colonnes de date différentes, donc je définis chaque colonne comme type 'date'.Mysql quel type de champ à utiliser pour les dates avec un mélange de dates complètes et partielles

Cependant chaque fois que j'important des dates, il semble les changer, et j'ai trouvé que c'est parce que mysql n'autorise pas les jours et les mois.

Mes dates vont de

1909-00-00 1963-09-00 1907-11-30

si parfois nous ne savons pas le mois, parfois le jour, et parfois seulement l'année a été enregistré.

Certes, la « bonne » façon de le faire est d'utiliser une sorte de champ de date, mais j'ai essayé une variété de différentes mises en page lors de l'importation des données et non des œuvres :( dd-mm-aaaa-mm DD- aaaa aaaa/jj/mm

Toutes les suggestions?

Répondre

0

Je suggère d'utiliser un varchar puis convertir chaque fois que vous en avez besoin d'être une date. Here est un site avec des fonctions de date qui seraient utiles.

+0

Merci pour les birdlips, c'est un peu où je suis venu aussi. Je me demandais cependant, pourquoi il n'y a aucune fonction ou type de champ pour les dates avec des entrées nulles, c'est souvent le cas dans les applications historiques! –

+0

autant que je comprends les choses la base de données essayera de valider la date comme elle est entrée. S'il est invalide, il ne vous permettra pas de le stocker. C'est là pour maintenir l'intégrité des données. Je ne pense pas que vous ayez d'options pour stocker une valeur non-date dans un champ de date. – northpole

1

Il n'y a pas de structure de données qui serait un ct comme une date mais permettrait 00 pour l'un des composants. Si vous avez vraiment insisté pour l'émuler, vous pouvez diviser les données en 3 colonnes - année, mois, jour, puis écrire un déclencheur compliqué pour valider chaque requête de mise à jour/insertion.

Je n'oserais pas cependant. Cependant, vous avez demandé, et j'ai essayé de répondre. ;]