Gör det inte. DateTime
värden ska lagras som DateTime
, om du inte har en riktigt bra anledning att lagra dem på annat sätt (som för att stödja datum- och tidsvärden utanför min/max-värdena för DateTime
), skulle jag föreslå att du bör lämna den i en DateTime
kolumn.
Du kan alltid manipulera hur du returnerar dem från databasen under Select
eller i presentationslagret. För att returnera unix-tiden från DateTime
, MySql tillhandahåller en inbyggd metod som heter UNIX_TIMESTAMP
. För att returnera antalet millisekunder, multiplicera helt enkelt med 1000, eftersom unix-tidsstämpeln är antalet sekunder sedan 1 januari 1970 (exklusive skottsekunder). Om du vill lagra unix-tid måste du använda en int-datatyp.
Observera att om du lagrar unix-tid istället för att lagra den faktiska DateTime
värde i en DateTime
datatyp kolumn, kommer du att förlora möjligheten att enkelt använda alla datetime inbyggda databasfunktioner. Om du till exempel vill ta reda på hur många rader som tillhör en specifik månad måste du först översätta data från int till datetime, och först då kommer du att kunna beräkna det.
Du kommer också att förlora noggrannhet (eftersom unix-tiden är felaktig även på 1 sekunds upplösning, eftersom den ignorerar skottsekunder).
Så, för att sammanfatta - När databasen erbjuder dig en datatyp som passar data, gå inte och lagra dessa data med en annan datatyp. använd Date
datatyp om du bara vill lagra datum, DateTime
datatyp om du vill lagra datetime-värden och Time
datatyp om du vill lagra en specifik tid på dagen.
P.S.
När du har att göra med datum- och tidsvärden, speciellt om du har att göra med kunder från flera platser, lagra ALLTID endast UTC-datumtider i din databas, såvida du inte vill bli galen förstås.