sql >> Database >  >> RDS >> PostgreSQL

Django DateTime-veld om tijdstempelvelden te genereren zonder tijdzone

De gegevenstypen voor postgres in Django verwijzen naar de letterlijke tekenreeks timestamp with time zone , en er lijkt geen optie te zijn om dat type te wijzigen.

Voor zover ik weet, heb je drie opties:

  1. Profiteer van Django's hook voor het uitvoeren van raw sql na de instructie create table . Maak hiervoor een map aan met de naam sql in uw app en een bestand in die map met de naam mymodel.postgres_psycopg2.sql . Plaats daar je alter-tabelverklaringen.

  2. Schrijf een aangepast veld om de modifiers voor het tijdstempelveld naar eigen inzicht te definiëren. Zie "aangepaste modelvelden schrijven ".

  3. Laat het django-veld zoals het is en voer de tijdzoneconversie uit in uw applicatie, zodat u er absoluut zeker van bent dat u de juiste tijd doorbrengt.

Mijn persoonlijke voorkeur voor data-integriteit is #3. Net als bij tekencoderingen, waarbij je er altijd zeker van wilt zijn dat je de tekenset kent en conversies correct afhandelt, voel ik me veel comfortabeler met datums/tijden waarvan de attributen (inclusief TZ) zo nauwkeurig mogelijk zijn gedefinieerd. U kunt er vandaag zeker van zijn dat al uw invoer al in UTC naar uw app komt, maar dat kan veranderen, vooral als de tijdstempels door eindgebruikers worden aangeleverd. Voor wat het waard is, zou ik een stap verder gaan, de tijdstempel in de app converteren naar UTC en deze opslaan in de database met UTC als tijdzone.




  1. Wat is het equivalent van de null-safe gelijkheidsoperator <=> in SQLite?

  2. JSON ontleden naar mySQL

  3. Vul een vervolgkeuzelijst in vanuit een mySQL-tabel in PHP

  4. SQL Server 2008- Tabelbeperkingen ophalen