sql >> Databáze >  >> RDS >> Mysql

Kdy jsme zvolili DateTime před Timestamp

Jak bylo řečeno v komentáři, věřím, že je to většinou na osobních preferencích. V mých očích použití unixového časového razítka a "starších" non-OOP rozhraní není způsob, jak to udělat v dnešním světě, například nepoužíváme (čti:neměli bychom) používat INT datový typ v naší databázi pro ukládání dat ve formátu Unix Timestamp, měli bychom místo toho používat nativní typ databáze, což je obvykle DATE nebo DATETIME typ, který spolupracuje s DateTime PHP objekt (a další jazyky), pokud jde o standardní převody, téměř nativně.

Abychom trochu upřesnili, co myslím standardními převody:Když použijete MySQL a vrátíte hodnotu do PHP, získáte řetězec data ve formátu ISO, jehož DateTime class analyzuje ve svém konstruktoru a dává vám okamžitě použitelný objekt. Naproti tomu, abyste šli cestou časových razítek Unixu, museli byste použít strtotime , pak date abyste jej nativně dostali do libovolného formátu.

Již dříve jsem se zmínil o interoperaci mezi našimi systémy PHP a systémy .NET. I když zde nejsou žádné konkrétní problémy způsobené používáním časového razítka, není to jednoduše praktické řešení, protože opět používáme databázi, která vrací hodnotu DateTime, kterou lze odeslat přímo z potrubí. Pokud bychom to měli převést na unixové časové razítko pro interní použití v PHP, museli bychom to také převést zpět, pokud bychom měli poslat odpověď nebo odeslat odpověď do aplikace .NET (nebo bych měl jen říct API v tomto případě) je to časové razítko a na konci jej převeďte. Pomocí DateTime celkově to zmírňuje potřebu jakýchkoli konverzí a celý proces vývoje je jednodušší.

A konečně, abyste k tomu všemu přidali, jak jste také zmínili ve svém příspěvku, můžete použít lesklé položky, jako je DateInterval , snadnější časové pásmo, snadnější manipulace a jednodušší formátování atd., když používáte DateTime a je to příbuzní objektově orientovaní partneři ve zločinu. V mých očích je to jen jednodušší vývojový proces.

Nevěřím, jak jsem na začátku řekl, že na to existuje "správná" odpověď, jde spíše o osobní preference založené na vašem vlastním stylu kódování a výše uvedené komentáře odrážejí moje.

  • V žádném případě tomu nevěřím. Obzvláště s PHP skripty obecně jsou tak krátké běžící procesy.

Ano :)

Viz komentáře výše k databázi, není "nativní" používat pro tento účel unixové časové razítko IMO. Stačí zavolat ->getTimezone a uložte jej do databáze, poté použijte ->setTimezone když jej znovu vytáhnete.



  1. Jak spustíte SQL z bash skriptu?

  2. ZACHOVÁNÍ LOB

  3. Zdrojový formát SSIS Implicitní převod pro datum a čas

  4. SQLITE nemůže upgradovat databázi pouze pro čtení z verze 1 na 2