sql >> Databáze >  >> RDS >> PostgreSQL

Pole Django DateTime pro generování polí časového razítka bez časového pásma

Datové typy pro postgres v Django mapují na řetězcový literál timestamp with time zone a nezdá se, že by existovala možnost tento typ změnit.

Pokud vím, máte tři možnosti:

  1. Využijte Django's hook pro spouštění raw sql za příkazem create table . Chcete-li to provést, vytvořte adresář s názvem sql ve vaší aplikaci a soubor v tomto adresáři s názvem mymodel.postgres_psycopg2.sql . Umístěte tam své příkazy alter table.

  2. Napište vlastní pole pro definování modifikátorů pro pole časového razítka, jak uznáte za vhodné. Viz "zápis polí vlastního modelu ".

    ."
  3. Ponechte pole django tak, jak je, a proveďte převod časového pásma ve své aplikaci, abyste si byli naprosto jisti, že ubíháte správný čas.

Moje osobní preference pro integritu dat je číslo 3. Stejně jako u kódování znaků, kde si vždy chcete být jisti, že znáte znakovou sadu a správně zpracováváte převody, cítím se mnohem pohodlněji s daty/časy, jejichž atributy (včetně TZ) jsou tak přesně definované, jak jen mohou být. Dnes si můžete být jisti, že všechny vaše vstupy do vaší aplikace přicházejí již v UTC, ale to se může změnit, zejména pokud časová razítka dodávají koncoví uživatelé. Za to, co stojí za to, bych udělal něco navíc, převedl časové razítko v aplikaci na UTC a uložil ho do databáze s UTC jako časovým pásmem.




  1. Vygenerujte časové období ze dvou datových sloupců

  2. Získání jedinečných názvů sloupců omezení z databáze Oracle

  3. Aktualizace Lion odstranila uživatele 'postgres'. Jak to obnovit?

  4. Schéma sněhové vločky