Datum lässt sich nicht in DB abspeichern

Installation und Anwendung von Datenbankschnittstellen wie SQLite, PostgreSQL, MariaDB/MySQL, der DB-API 2.0 und sonstigen Datenbanksystemen.
Antworten
erdmulch
User
Beiträge: 230
Registriert: Samstag 17. Juli 2010, 19:50

Hallo Forum,

Ich will das heutige Datum mit Uhrzeit in eine Tabelle abspeichern.

Code: Alles auswählen

   a = Time(start_time=datetime.now())
    a.save()
Leider kommt foldende Fehlermeldung:
RuntimeWarning: DateTimeField received a naive datetime (2015-01-31 14:56:38.520191) while time zone support is active.
RuntimeWarning)

kann mir jemand sagen an was das liegt?

meine Spalte hat den Datentyp:
timestamp without time zone

vielen Dank
Sirius3
User
Beiträge: 17754
Registriert: Sonntag 21. Oktober 2012, 17:20

@erdmulch: ich glaube, ich habe Dir schon an anderer Stelle empfohlen, das Datum von der Datenbank eintragen zu lassen. Der korrekte Weg ist es, das Feld im Time-Model mit

Code: Alles auswählen

start_time = models.DateTimeField(auto_now_add=True)
anzulegen und gar keine start_time anzugeben.
Benutzeravatar
sparrow
User
Beiträge: 4195
Registriert: Freitag 17. April 2009, 10:28

Ist das ganze eine Django-Anwendung?


Hier steht:
2. I see lots of RuntimeWarning: DateTimeField received a naive datetime (YYYY-MM-DD HH:MM:SS) while time zone support is active – is that bad?

When time zone support is enabled, the database layer expects to receive only aware datetimes from your code. This warning occurs when it receives a naive datetime. This indicates that you haven’t finished porting your code for time zone support. Please refer to the migration guide for tips on this process.

In the meantime, for backwards compatibility, the datetime is considered to be in the default time zone, which is generally what you expect.
Soll heißen: wenn time zone support aktiv ist, musst du auch eine Zeitzone beim Speichern eine Zeitangabe mit angeben. Macht ja auch Sinn, bei einer Webanwendung bei der potentiell jeder Benutzer eine andere Zeitzone haben kann.
Wird die nicht angegeben wird die Zeit wie oben interpretiert und eine Warnung angegeben. Die Warnung heißt aber nicht, dass nicht gespeichert wurde.
Antworten