Usa il metodo Python datetime.strftime(format), dove format = '%Y-%m-%d %H:%M:%S'.
import datetime
now = datetime.datetime.utcnow()
cursor.execute("INSERT INTO table (name, id, datecolumn) VALUES (%s, %s, %s)",
("name", 4, now.strftime('%Y-%m-%d %H:%M:%S')))
Fusi orari
Se i fusi orari sono un problema, il fuso orario di MySQL può essere impostato per UTC come segue:
cursor.execute("SET time_zone = '+00:00'")
E il fuso orario può essere impostato in Python:
now = datetime.datetime.utcnow().replace(tzinfo=datetime.timezone.utc)
MySQL riconosce i valori DATETIME e TIMESTAMP in questi formati:
Come stringa in formato "AAAA-MM-GG HH: MM: SS" o "AA-MM-GG HH: MM: SS"
. Anche qui è consentita una sintassi "rilassata": qualsiasi carattere di punteggiatura può essere utilizzato come delimitatore tra parti di data o parti di tempo. Ad esempio, "2012-12-31 11:30:45", "2012 ^ 12 ^ 31 11 + 30 + 45", "2012/12/31 11 * 30 * 45" e "2012 @ 12 @ 31 11 ^ 30 ^ 45 'sono equivalenti.
L'unico delimitatore riconosciuto tra una parte di data e ora e una parte di secondi frazionari è il punto decimale.
Le parti di data e ora possono essere separate da T invece che da uno spazio. Ad esempio, "2012-12-31 11:30:45" "2012-12-31T11: 30: 45" sono equivalenti.
Come una stringa senza delimitatori in formato "AAAAMMGGHHMMSS" o "AAMMGGHHMMSS", a condizione che la stringa abbia senso come data. Ad esempio, "20070523091528" e "070523091528" vengono interpretati come "2007-05-23 09:15:28", ma "071122129015" è illegale (ha una parte di minuti senza senso) e diventa "0000-00-00 00: 00:00' .
Come numero in formato AAAAMMGGHHMMSS o AAAAMMGHHMMSS, a condizione che il numero abbia senso come data. Ad esempio, 19830905132800 e 830905132800 vengono interpretati come "1983-09-05 13:28:00".
%scursor.execute("INSERT INTO table (name, id, datecolumn) VALUES (%s, %s , '%s')",("name", 4,now))