PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Datum in welchem Format speichern



Torsten.E
13-05-2004, 15:36
Was ist das beste Format um ein "normales" Datum zu speichern.
Es soll für jeden Datensatz das Datum gespeichert werden, zudem
er angelegt wurde

Also kein Timestamp-Format.

Was für ein Variable-Typ empfiehlt sich da in MySQL am besten.

DOUBLE ?? um den time()-Wert zu sichern ?


Torsten.E

fs111
13-05-2004, 16:15
Warum nimmst Du nicht das SQL-Date und wandelst es in Deinem Programm einfach in ein "normales" (bspw. dt.) Datum um? Ich halte das für sinnvoller, weil Dir dann auch sämtliche Datumsoperationen der Datenbank offen stehen, die DU bei einem eigenen Format nicht hast.

fs111

Hans-Georg Normann
13-05-2004, 21:24
führe mal die Aussage von meinem Vorgänger fort

......... es sei denn, du hast es mit unvollständigen Datenangaben zu tun. Beispiel: eine Ahnentafel. Manchaml ist nur der Tag und Monat bekannt, wann jemand geboren wurde, ein anderes Mal hast nur das Jahr und manchmal auch garnix. Aber das sind schon sehr spezielle Bedingungen.

Hans

Gaert
17-05-2004, 18:29
Hallo,

Ein Timestamp eignet sich für aktuelle Daten natürlich hervorragend, aber bei allen Daten die früher als 1970 und später als 2034 sind bist du natürlich aufgeschmissen.
Mein Tip daher auch: Datumsformat von MySQL benutzen, wenn du dir nicht absolut sicher bist, dass dein Datum im oben genannten Zeitraum liegt.

Gruß,

Gaert

sticky bit
18-05-2004, 12:27
Original geschrieben von Hans-Georg Normann
führe mal die Aussage von meinem Vorgänger fort

......... es sei denn, du hast es mit unvollständigen Datenangaben zu tun. Beispiel: eine Ahnentafel. Manchaml ist nur der Tag und Monat bekannt, wann jemand geboren wurde, ein anderes Mal hast nur das Jahr und manchmal auch garnix. Aber das sind schon sehr spezielle Bedingungen.

Hans Tja, dann wäre es wohl das besten daraus drei Integer Spalten machen, einen für Tag einen für Monat und einen für Jahr. So würde ich es zumindest dann tun...

sticky bit
19-05-2004, 08:52
Original geschrieben von Claudine
Integer ist vom Speicher vollkommen überdimensioniert + Blodsinn.
Na dann halt explizit TINYINT UNSIGNED für Monat und Tag und SMALLINT UNSIGNED fürs Jahr, das sollte dann bis ins Jahr 65535 reichen. Wer Verwandte hat die er bis vor Jesus zurück verfolgen kann muss halt doch signed nehmen. Eigentlich wollte ich ja nur zum Ausdruck bringen, dass ein Ganzzahlformat IMHO passend währe. OK, YEAR könnte man noch für das Jahr hernehmen würde zwar exakt passen, die Beschränkung bis minimal 1901 dürfte für ne Ahnentafel aber etwas arg knapp bemessen sein, wesewegen ich das verwerfen würde, ausserdem muss man die MySQL Version da auch noch mit einbeziehen...

Original geschrieben von Claudine
ließ dir noch 1x die Nachricht von Gaert durch, danach beschäftige dich
mit

- Speicherverwaltung + Optimierung und Datentypen in MySQL

beides gibt auf der Homepage des Herstellers.

MySQL bringt schon für fast jeden Quatsch den passenden Typ mit.
Man muß sich die Typen bloß 1x anschauen...
Nachricht von GAERT (den schreibt man gross ;) :P) hab ich nun wiederhohlt gelesen, sehe den zusammenhang zu dem was ich gequoted habe und / oder meiner Antwort aber nicht. DATE ist wohl für lückenhafte angaben weniger geeignet, auch wenn ich es nicht probiert habe, aber den 00.02.1893 wird das wohl kaum annehmen (oder doch, belehere mich sollte diese Vermutung falsch sein) und wie sonst willst du dann kennzeichen, dass z. B. der genaue Tag unbekannt ist? Speicher technisch kommste übrigens mit der TINYINT UNSIGNED, TINYINT UNSIGNED, SMALLINT Lösung genau um 1Byte länger hin als mit ner DATE Lösung. YEAR und TINYINT brauchen im übrigen beide ein Byte. Wieso YEAR dann so besch...eiden beschränkt ist ist die andere Frage. Naja, ein Byte geopfert um das Problem ungenauer Angaben umschiffen zu können find ich jetzt nciht so schlimm, ausserdem um spitzfindig zu sein, deine Werte haste auch besser atomisiert... ;) (auch wenn mir klar ist, das beim (Zeit)Datum letztendlich der Wert des "julianischen" Datum dahinter zählt, und der Rest nur Darstellungssache ist, obwohl man in speziellen Fällen das ganze durchaus als eigenständige Attribute betrachten kann...)
Die Sache mit dem Beschäftigen mit Speicherverwaltung und der Optimierung lass ich jetzt mal aus und verschieb das auf n Urlaub oder so, dann schau ich mir auch alle Typen bloss 1x an, versprochen... ;)

Original geschrieben von Claudine
Dann 1-2 Bücher kaufen.
Ohje Geld ausgeben... Naja, Bücherei tuts vielleicht auch...

Original geschrieben von Claudine
Ich glaube du hast, noch kein Verständis für Datenbanken und die Phylosphie
die dahinter steckt.Kann sein. Könnte da eigentlich keine "Philosophie" entdecken, würde es eher als Konzept bezeichnen. However...

Original geschrieben von Claudine
Wir können helfen, aber an dieser Stelle keinen Unterricht geben. Komme darauf zurück, Danke...
Am Besten gleich, dann mach mir doch gleich mal einen konkreten Vorschlag wie du das machen würdest um o. g. Situation am Besten in einer DB abzubilden?

Jana
19-05-2004, 10:27
Da ich fast immer Pear zur Verfügung habe nehme ich gerne:

$mydatum = new Date_Calc;
$tagezahl = $mydatum -> dateToDays($day,$month,$year);

Damit umgehe ich sämtlich Probleme. Additionen ect. sind so einfach.
http://pear.php.net/