2016-04-25 11 views
1

Menschen können ein Konto auf meiner Website für 1, 2, 3, 4 oder 5 Jahren kaufen. Ich möchte diesen Zeitraum in einer Tabelle speichern. Das ist mein Tisch (bis jetzt):Start und Ende Timestamp in der Datenbank (Unix Timestamp oder Datetime)

table: users 

- user_id  int(11) 
- username  varchar(48) 
- password  varchar(48) 
- time_start  int(11) 
- time_end  int(11) 

Wenn ich einen Datensatz hinzufügen, füge ich die TIME_START und TIME_END mit:

UNIX_TIMESTAMP(NOW())/UNIX_TIMESTAMP(NOW() + INTERVAL 1/2/3/4/5 year) 

Ist dies der beste Ansatz? Um diese Daten mit einem UNIX-Zeitstempel zu speichern. Oder sollte ich nur normale Datetime-Felder verwenden? Ist es eine gute Idee, UNIX-Zeitstempel in einem ganzzahligen Feld zu speichern? Und ist eine Länge von 11 genug? Ich habe es getestet und es funktioniert. Ich habe es gewählt, weil der UNIX-Zeitstempel in UTC ist und ich auf meiner Website eine Zeitfunktion verwende (es zeigt die Zeit wie 'vor 2 Sekunden', 'vor 3 Minuten', ... und wenn ich sie in ein Datetime-Feld geht alles schief ...)

Ich lese über das Jahr 2038 Problem (https://en.wikipedia.org/wiki/Year_2038_problem). Wird das für mich in Zukunft ein Problem sein?

Mit Grüßen, Sam

PS: Sorry für mein Englisch, ich hoffe mein Problem klar genug!

+0

Wahrscheinlich ein Duplikat von [Sollte ich field 'datetime' oder 'timestamp' verwenden?] (Http://stackoverflow.com/questions/409286/should-i-use-field-datetime-ortimestamp) –

Antwort

0

Speichern als Datetime ist besser für das "2038 Problem", wenn Ihre aktuelle Konfiguration tatsächlich so lange (unwahrscheinlich) anhält und meiner Meinung nach die Handhabung recht einfach macht und leicht lesbar ist. Gibt es einen Grund, warum Sie die Datumsangaben nicht verwenden möchten?

Und Ihr Englisch ist in Ordnung!

Verwandte Themen