niet doen. DateTime
waarden moeten worden opgeslagen als DateTime
, tenzij je een heel goede reden hebt om ze anders op te slaan (zoals voor het ondersteunen van datum- en tijdwaarden buiten de min/max-waarden van DateTime
), zou ik willen voorstellen om het in een DateTime
te laten staan kolom.
U kunt altijd manipuleren hoe u ze uit de database retourneert tijdens Select
of in de presentatielaag. De unix-tijd retourneren van DateTime
, MySql biedt een ingebouwde methode genaamd UNIX_TIMESTAMP
. Om het aantal milliseconden te retourneren, vermenigvuldigt u eenvoudig met 1000, aangezien de Unix-tijdstempel het aantal seconden is sinds 1 januari 1970 (schrikkelseconden niet meegerekend). Als u Unix-tijd wilt opslaan, moet u een int-gegevenstype gebruiken.
Houd er rekening mee dat als u Unix-tijd opslaat in plaats van de werkelijke DateTime
waarde in een DateTime
datatype-kolom verliest, verliest u de mogelijkheid om alle ingebouwde databasefuncties van datetime gemakkelijk te gebruiken. Als je bijvoorbeeld wilt weten hoeveel rijen bij een bepaalde maand horen, moet je eerst de gegevens van int naar datetime vertalen en pas daarna kun je dat berekenen.
U verliest ook de nauwkeurigheid (aangezien Unix-tijd zelfs bij de resolutie van 1 seconde onnauwkeurig is, omdat schrikkelseconden worden genegeerd).
Dus, tot slot:als de database u een gegevenstype biedt dat bij de gegevens past, sla die gegevens dan niet op met een ander gegevenstype. gebruik de Date
gegevenstype als u alleen datums wilt opslaan, de DateTime
gegevenstype als u datetime-waarden wilt opslaan, en de Time
gegevenstype als u een specifieke tijd van de dag wilt opslaan.
P.S.
Als je te maken hebt met datum-tijdwaarden, vooral als je te maken hebt met klanten van meerdere locaties, sla ALTIJD alleen UTC-datumtijden op in je database, tenzij je natuurlijk gek wilt worden.