2009-06-19 7 views

Répondre

4

Il y a certainement des raisons pour lesquelles c'est une mauvaise idée. Il y a aussi des raisons pour lesquelles vos choix sont limités. C'est une mauvaise idée parce que c'est un élément de données unique et pour la raison plus pratique que vous ne pouvez pas stocker un fuseau horaire si vous avez deux champs.

Comme mentionné ci-dessus, les nulls sont l'avantage évident de l'utilisation de deux champs.

Vous pouvez également envisager d'utiliser un seul champ datetime et de stocker un indicateur pour indiquer si l'utilisateur a entré ou non une heure. Cela pourrait être un drapeau booléen. Cependant, vous devrez toujours réfléchir à la façon dont vous allez utiliser ces données - entrer uniquement une date dans un champ date/heure conduira à un composant temporel défini sur minuit. Cela aura des implications dans le tri et la sélection. De plus, si vous stockez des fuseaux horaires, vous devrez faire très attention lorsque vous utilisez les données.

Afin de répondre à votre exigence de savoir si une heure a été entrée ou non, vous devez avoir deux champs. Vous n'avez pas besoin du deuxième champ pour être un temps cependant.

+0

Intéressant, si je devais utiliser un seul champ d'horodatage avec des informations de fuseau horaire et un booléen pour stocker les données, que voulez-vous dire par je devrai faire très attention quand j'utilise les données? – sai

+0

Toutes nos excuses pour le long délai - vous devrez toujours faire attention car vos données contiendront des horodatages réglés à une certaine date à minuit dans certains fuseaux horaires. Ce seront les dates auxquelles l'utilisateur n'a pas saisi une heure. Les tris et les comparaisons traiteront cela comme minuit non nul (et dans les comparaisons entre fuseaux horaires, cela peut mener à deux fois être considéré comme différent quand vous avez juste deux dates). Vous devrez juste rester conscient de ce problème. –

2

La réponse évidente est d'utiliser deux champs séparés; alors vous pouvez utiliser des valeurs NULL. Si vous choisissez d'utiliser un champ, vous devrez choisir une partie de temps magique qui signifie «n'est pas entré en temps réel», ce qui risque de coïncider avec un temps réel (même improbable).

De même, si vous avez l'intention d'utiliser souvent la partie date et heure séparément, il peut être pratique d'utiliser des champs séparés; sinon, vous devrez souvent utiliser des fonctions de sélection pour extraire la partie pertinente d'un champ.

+1

J'ai lu dans de nombreux forums qui disent que le champ séparé est une mauvaise idée. La raison pour laquelle je demande est parce que je m'inquiète il peut y avoir des inconvénients cachés pour l'utilisation de champs séparés. Mais à partir des points que vous mentionnez, je crois que c'est le meilleur choix? – sai

Questions connexes