2009-06-19 2 views

Antwort

4

Es gibt Gründe, warum dies eine schlechte Idee ist. Es gibt auch Gründe, warum Ihre Auswahl begrenzt ist. Es ist eine schlechte Idee, weil es ein einzelnes Datenelement ist und aus dem praktischeren Grund, dass Sie eine Zeitzone nicht speichern können, wenn Sie zwei Felder haben.

Wie oben erwähnt, sind Nullwerte der offensichtliche Vorteil der Verwendung von zwei Feldern.

Sie können auch ein einzelnes Datetime-Feld verwenden und ein Flag speichern, um anzuzeigen, ob der Benutzer eine Uhrzeit eingegeben hat oder nicht. Dies könnte eine boolesche Flagge sein. Sie müssen jedoch noch darüber nachdenken, wie Sie diese Daten verwenden möchten. Wenn Sie nur ein Datum in ein Datetime-Feld eingeben, wird die Zeitkomponente auf Mitternacht festgelegt. Dies hat Auswirkungen auf die Sortierung und Auswahl. Wenn Sie Zeitzonen speichern, müssen Sie außerdem sehr vorsichtig sein, wenn Sie die Daten verwenden.

Um Ihre Anforderung zu erfüllen, zu wissen, ob eine Uhrzeit eingegeben wurde oder nicht, benötigen Sie zwei Felder. Sie brauchen das zweite Feld nicht, um eine Zeit zu sein.

+0

Interessant, wenn ich ein einzelnes Zeitstempelfeld mit Zeitzoneninformationen und einem Boolean zum Speichern der Daten verwenden würde, was meine ich damit, dass ich sehr vorsichtig sein muss, wenn ich die Daten verwende? – sai

+0

Entschuldigung für die lange Verzögerung - Sie müssen immer vorsichtig sein, da Ihre Daten Zeitstempel enthalten, die auf ein Datum um Mitternacht in einer bestimmten Zeitzone eingestellt sind. Dies sind die Daten, an denen der Benutzer keine Uhrzeit eingegeben hat. Sortierungen und Vergleiche behandeln dies als Mitternacht, nicht als Null (und in Cross-Time-Zone-Vergleichen kann dies dazu führen, dass zwei Zeiten als unterschiedlich angesehen werden, wenn Sie eigentlich nur zwei Daten haben). Sie müssen nur auf dieses Problem aufmerksam bleiben. –

2

Die offensichtliche Antwort ist, zwei getrennte Felder zu verwenden; dann können Sie NULL-Werte verwenden.

Wenn Sie sich für ein Feld entscheiden, müssen Sie einen magischen Zeitteil auswählen, der "keine Echtzeit eingeben" bedeutet, was die Gefahr birgt, mit einer Echtzeit (wie unwahrscheinlich) übereinzustimmen.

Wenn Sie beabsichtigen, den Datums- und Uhrzeitteil oft getrennt zu verwenden, ist es möglicherweise auch bequem, separate Felder zu verwenden. Andernfalls müssen Sie häufig Auswahlfunktionen verwenden, um den relevanten Teil eines Feldes zu extrahieren.

+1

Ich lese in vielen Foren, die separaten Bereich sagen, ist eine schlechte Idee. Der Grund, warum ich frage, ist, weil ich befürchte, dass es versteckte Nachteile für die Verwendung von getrennten Feldern gibt. Aber von den Punkten, die Sie erwähnen, glaube ich, dass es die bessere Wahl ist? – sai