2016-07-14 1 views
1

Ich habe eine Tabelle, die mehrere Spalten für nicht-Gregorianische datetime (Jalali-Kalender) haben sollte. Ich muss sie in Reihenfolge und wo Anweisungen verwenden, um den vollständigen Tabelleninhalt in HTML anzuzeigen. Welches Szenario führt zu einer besseren Performance durch Berücksichtigung von MySQL und PHP Ausführungszeiten?Welches ist besser zum Speichern von nicht-Gregorian Datetime in MySQL? datetime + PHP konvertiert OR varchar ODER Unix timestamp als int

1) Konvertieren von nicht-Gregorianischen Datumsangaben in Gregorianisch unter Verwendung von PHP in jedem Lese-/Schreibmodus und unter Verwendung von MySQL datetime.

2) Konvertieren von nicht-gregorianischen Datumsangaben in UNIX-Zeitstempel unter Verwendung von PHP in jedem Lese-/Schreibmodus und unter Verwendung von MySQL int/bigint.

3) Verwenden von MySQL varchar.

+0

Müssen Sie basierend auf Ihren Jalali-Daten DBMS-Suchen durchführen? Ist die Konvertierung von datetime nach Jalali vollständig reversibel? Wie teuer ist die Konvertierung in PHP? –

+0

UNIX-Zeitstempel funktionieren nicht korrekt für Daten vor 1970-01-01 Gregorian. –

Antwort

1

Es hängt wirklich davon ab, wie viel Sie erwarten, den Wert innerhalb der Datenbank zu verwenden, und wie Sie erwarten, es dort zu verwenden.

Meine Intuition würde vorschlagen, die Datenbank Seite mit Standard-Datumsangaben und nur Konvertierung, Suchkriterien für Abfragen und angezeigte Daten, auf der Client/PHP-Seite, wenn nötig. Dies ermöglicht es Ihnen, die eingebauten MySQL Datums- und Datetime-Funktionen zu nutzen.

Da ich jedoch nicht mit diesem Kalender vertraut bin, und nur überflogen Wiki und hatte "Schwierigkeiten bei der Berechnung des Kalenders" stehen für mich; daher mag meine Intuition falsch sein. Es kann sein, dass Sie besser eine Reihe von gespeicherten Funktionen in der Datenbank für den Jalali-Kalender erstellen, die die von MySQL bereitgestellten widerspiegeln, oder es kann viel einfacher sein, eine vollständige Programmiersprache für die Berechnungen zu verwenden.

Vielleicht möchten Sie sogar das Jalali als etwas anderes als einen Standard-Datum/Datetime-Typ oder Uniximestamp-Integer speichern; statt dessen vielleicht eine Implementierung eines Jalalitimestamp-Wertes zu erfinden oder zu finden, der die in MySQL verfügbaren Indizierungsoptionen nutzen könnte.