sql >> Database teknologi >  >> RDS >> PostgreSQL

Django DateTime-felt til at generere tidsstempelfelter uden tidszone

Datatyperne for postgres i Django er knyttet til strengen literal timestamp with time zone , og der ser ikke ud til at være en mulighed for at ændre den type.

Så vidt jeg ved, har du tre muligheder:

  1. Udnyt Djangos hook til at udføre rå sql efter create table-sætningen . For at gøre dette skal du oprette en mappe kaldet sql i din app og en fil i den mappe kaldet mymodel.postgres_psycopg2.sql . Placer dine ændringstabeludsagn derinde.

  2. Skriv et brugerdefineret felt for at definere modifikatorerne for tidsstempelfeltet, som du finder passende. Se "skrivning af tilpassede modelfelter ".

  3. Lad django-feltet være, som det er, og udfør tidszonekonverteringen i din applikation, så du er helt sikker på, at du passerer den rigtige tid.

Min personlige præference for dataintegritet er #3. Ligesom med tegnkodninger, hvor du altid vil være sikker på, at du kender tegnsættet og håndterer konverteringer korrekt, føler jeg mig meget mere komfortabel med datoer/tidspunkter, hvis attributter (inklusive TZ) er så præcist definerede, som de kan være. Du kan i dag være sikker på, at alle dine input kommer til din app allerede i UTC, men det kan ændre sig, især hvis tidsstemplerne leveres af slutbrugere. For hvad det er værd, ville jeg gå den ekstra mil, konvertere tidsstemplet i appen til UTC og gemme det i DB med UTC som tidszone.




  1. Inkonsekvent Transponering

  2. Open source ER-diagramværktøj til mysql

  3. Oracles ODP.Net kan ikke håndtere newlines .Net newlines?

  4. Hvordan kan jeg udtrække dele af et Django Postgres DateRangeField