Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Wann wählen wir DateTime gegenüber Timestamp

Wie in einem Kommentar gesagt, glaube ich, dass dies hauptsächlich auf persönliche Vorlieben zurückzuführen ist. In meinen Augen ist die Verwendung eines Unix-Zeitstempels und "alter" Nicht-OOP-Schnittstellen in der heutigen Welt nicht der richtige Weg, zum Beispiel verwenden wir (sprich:sollten nicht) einen INT datatype in unserer Datenbank, um Daten im Unix-Timestamp-Format zu speichern, sollten wir stattdessen den nativen Typ der Datenbank verwenden, der normalerweise ein DATE ist oder DATETIME Typ, der mit DateTime von PHP zusammenarbeitet Objekt (und andere Sprachen) fast nativ, wenn es um Standardkonvertierungen geht.

Um etwas näher darauf einzugehen, was ich mit Standardkonvertierungen meine:Wenn Sie MySQL verwenden und einen Wert nach PHP zurückziehen, erhalten Sie eine ISO-formatierte Datumszeichenfolge, von der die DateTime ist Die Klasse analysiert in ihrem Konstruktor und gibt Ihnen ein sofort verwendbares Objekt. Im Gegensatz dazu müssten Sie für die Unix-Timestamp-Route strtotime verwenden , dann date um es nativ in das gewünschte Format zu bringen.

Ich habe zuvor die Interoperabilität zwischen unseren PHP-Systemen und .NET-Systemen erwähnt. Obwohl es keine spezifischen Probleme gibt, die durch die Verwendung eines Zeitstempels verursacht werden, ist dies einfach keine praktische Lösung, da wir wiederum eine Datenbank verwenden, die einen DateTime-Wert zurückgibt, der direkt in die Pipeline gesendet werden kann. Wenn wir dies in einen Unix-Zeitstempel für die interne Verwendung in PHP konvertieren würden, müssten wir es auch wieder zurückkonvertieren, wenn wir eine Antwort senden oder eine Antwort an die .NET-Anwendung senden würden (oder sollte ich einfach API sagen). in diesem Fall), das ist ein Zeitstempel, und konvertieren Sie ihn am Ende. Durch die Verwendung von DateTime Insgesamt wird dadurch die Notwendigkeit jeglicher Konvertierungen verringert und der gesamte Entwicklungsprozess ist einfacher.

Um all dem hinzuzufügen, können Sie, wie Sie auch in Ihrem Beitrag erwähnt haben, glänzende Elemente wie DateInterval verwenden , einfachere Zeitzonen, einfachere Bearbeitung und einfachere Formatierung usw., wenn Sie DateTime verwenden und seine verwandten objektorientierten Partner in der Kriminalität. In meinen Augen ist es nur ein einfacherer Entwicklungsprozess.

Wie ich eingangs sagte, glaube ich nicht, dass es darauf eine "richtige" Antwort gibt, eher eine persönliche Präferenz, die auf Ihrem eigenen Programmierstil basiert, und die obigen Kommentare spiegeln meine wider.

  • Das glaube ich in keinster Weise. Vor allem, da PHP-Skripte im Allgemeinen sowieso so kurz laufende Prozesse sind.

Ja :)

Siehe Kommentare oben zur Datenbank, es ist nicht "nativ", einen Unix-Zeitstempel für diesen Zweck zu verwenden, IMO. Sie können einfach ->getTimezone aufrufen und speichern Sie dies in der Datenbank, dann verwenden Sie ->setTimezone wenn Sie es wieder herausziehen.