sql >> Databasteknik >  >> RDS >> Mysql

När valde vi DateTime framför Timestamp

Som sagt i en kommentar tror jag att detta mest beror på personliga preferenser. I mina ögon är användningen av en Unix-tidsstämpel och "legacy" icke-OOP-gränssnitt inte sättet att göra det i dagens värld, till exempel använder vi (läs:borde inte) en INT datatyp i vår databas för att lagra datum i Unix Timestamp-format, bör vi istället använda databasens ursprungliga typ som vanligtvis är en DATE eller DATETIME typ som samarbetar med PHPs DateTime objekt (och andra språks) nästan naturligt när det kommer till standardkonverteringar.

För att utveckla lite vad jag menar med standardkonverteringar:När du använder MySQL och drar tillbaka ett värde till PHP får du en ISO-formaterad datumsträng, varav DateTime klass analyserar i sin konstruktor som ger dig ett omedelbart användbart objekt. Däremot, för att gå Unix-tidsstämpelvägen måste du använda strtotime , date för att få det till vilket format du vill ha.

Jag nämnde tidigare om interop mellan våra PHP-system och .NET-system. Även om det inte finns några specifika problem som orsakas av att använda en tidsstämpel är det helt enkelt inte den praktiska lösningen, eftersom vi återigen använder en databas som returnerar ett DateTime-värde som kan skickas direkt. Om vi ​​skulle konvertera detta till en unix-tidsstämpel för intern användning i PHP måste vi också sedan konvertera det tillbaka om vi skulle skicka ett svar, eller skicka ett svar till .NET-applikationen (eller ska jag bara säga API i det här fallet) som är en tidsstämpel och konvertera den i slutet. Genom att använda DateTime överlag minskar det behovet av att omvandlingar ska ske överhuvudtaget och hela utvecklingsprocessen är enklare.

Slutligen för att lägga till allt detta, som du också nämnde i ditt inlägg, får du använda glänsande föremål som DateInterval , enklare tidszonindelning, enklare manipulation och enklare formatering etc när du använder DateTime och det är relaterade objektorienterade partners i brott. Det är bara en enklare utvecklingsprocess i mina ögon.

Jag tror inte som jag inledningsvis sa att det finns ett "rätt" svar på detta, bara mer av en personlig preferens baserat på din egen kodningsstil, och kommentarerna ovan återspeglar min.

  • Jag tror inte det på något sätt. Speciellt med PHP-skript som i allmänhet är så korta processer ändå.

Ja :)

Se kommentarerna ovan om databasen, det är inte "native" att använda en Unix Timestamp för detta ändamål IMO. Du kan bara ringa ->getTimezone och lagra detta i databasen, använd sedan ->setTimezone när du drar ut den igen.



  1. Hur drar man tillbaka ett saltat lösenord från databasen och autentiseringsanvändaren?

  2. Hur kan jag få en vanlig postgres-databasdump på heroku?

  3. När du använder MySQL's FOR UPDATE-låsning, vad är exakt låst?

  4. Android SQLite Databas Unit Testing