Frage

Sie System erlaubt es, neue Benutzer ihr Hochzeitsdatum registrieren und eingeben. Als Purist, wollte ich dies als ein Datum speichern. Nach Benutzern Interviews, war es klar, dass die Realität von diesem Ansatz unterscheidet. Benutzer sind oft nicht sicher, ob am Tag oder Monat, und wünschen Teildaten zu speichern, so „Juni 2009“ oder „irgendwann im Jahr 2012“.

Kennt jemand ein gutes Design-Muster, das die Speicherung von Teildaten ermöglicht, und dann einen Zeitplan für den großen Tag zu schaffen versuchen - auch wenn es teilweise die eingegebenen Daten?

War es hilfreich?

Lösung

Vielleicht ein "fuzzy" date. Wenn sie sagen, „Juni 2009“, das als 15. Juni 2009 mit einer Abweichung von +/- 15 Tagen gelagert werden.

„irgendwann im Jahr 2010“ würde mit einer Varianz von 180 Tagen 1. Juli 2010 sein.

So speichern Sie ein Datum und einen # Tage.

Wenn / wie das in der Praxis funktionieren würde, weiß ich nicht. Nur eine Idee. Ein Datumsbereich könnte einfacher zu implementieren sein.

Andere Tipps

Sie können speichern Sie es als einen Bereich mit einem nach-Datum und vor dem aktuellen Spalte.

Sie können jederzeit speichern, das Datum in separaten Spalten:

  • Jahr
  • Monat
  • Tag-of-Monat

Halten sie alle nullable. Sie können eine Spalte hinzufügen, in dem Sie die berechnete Vollzeit speichern. Aus dieser berechneten Zeit Sie einige Standardwerte für alle Spalten verwenden, die null sind.

Sie können speichern Daten als YYYYMMDD, mit unbekannten Monaten / Tagen auf 0 gesetzt zum Beispiel würde 20090200 „in Februar 2009 ein Tag“ sein. Dies wird alles, was Sie sortieren und zu vergleichen, relativ einfach, und wenn Sie es in ein Datum konvertieren müssen, können Sie einfach 1 zum Monat oder Tag hinzufügen für fortgeschrittenere Datum comparisions eine Annäherung zu erhalten.

Ich hatte ein ähnliches Problem mit Terminen; mit dem zusätzlichen Problem, dass einige Leute auch „15. Juni“, ohne Angabe Jahr sagen wollte. Ist dies ein Fall, dass Sie zu handhaben müssen?

ich den Tag, Monat und Jahr in drei separaten Spalten in der Datenbank, wobei jeden nullable gespeichert, dann (etwas) neu erfunden das Rad in meiner Anwendung (wie auch einige Fälle, wie Menschen disallowing sagen: „The 15th von 1974" ).

Wie ich jedoch all die Datum-Handling in meiner Anwendungslogik setzen, ich zugegriffen nie die drei Spalten einzeln. Im Nachhinein wünschte ich, dass ich sie in einer einzigen Spalte gesetzt hatte, halte Teildaten als Zeichenkette (so etwas wie „19740615“, „1974 ----“, „---- 0615“, etc.), nur so, dass ich hat d weniger Spalte Unordnung.

Ich denke, es hängt davon ab, wie viel Sie in der Datenbank tun wollen und wie viel wollen Sie in Ihrer Anwendung zu tun. So oder so, ich glaube, Sie werden ein etwas anders förmiges Rad erfinden werden. Aber natürlich, sie ist gut genug, um einige ordentlich, gekapselte, wieder verwendbaren Klassen zu machen - das wird es Spaß machen! : -)

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top