Utilisez la méthode Python datetime.strftime(format)
, où 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')))
Fuseaux horaires
Si les fuseaux horaires sont un problème, le fuseau horaire MySQL peut être défini pour UTC comme suit:
cursor.execute("SET time_zone = '+00:00'")
Et le fuseau horaire peut être défini en Python:
now = datetime.datetime.utcnow().replace(tzinfo=datetime.timezone.utc)
MySQL reconnaît les valeurs DATETIME et TIMESTAMP dans ces formats:
Sous forme de chaîne au format «AAAA-MM-JJ HH: MM: SS» ou «AA-MM-JJ HH: MM: SS»
. Une syntaxe «assouplie» est également autorisée ici: tout caractère de ponctuation peut être utilisé comme délimiteur entre les parties de date ou d'heure. Par exemple, "2012-12-31 11:30:45", "2012 ^ 12 ^ 31 11 + 30 + 45", "2012/12/31 11 * 30 * 45" et "2012 @ 12 @ 31 11 ^ 30 ^ 45 'sont équivalents.
Le seul délimiteur reconnu entre une partie de date et d'heure et une partie de fraction de seconde est le point décimal.
Les parties de date et d'heure peuvent être séparées par T plutôt que par un espace. Par exemple, «2012-12-31 11:30:45» «2012-12-31T11: 30: 45» sont équivalents.
En tant que chaîne sans délimiteurs au format «AAAAMMJJHHMMSS» ou «AAMMJJHHMMSS», à condition que la chaîne ait un sens comme date. Par exemple, «20070523091528» et «070523091528» sont interprétés comme «2007-05-23 09:15:28», mais «071122129015» est illégal (il a une partie minute absurde) et devient «0000-00-00 00: 00:00 '.
En tant que nombre au format AAAAMMJJHHMMSS ou AAMMJJHHMMSS, à condition que le nombre ait un sens en tant que date. Par exemple, 19830905132800 et 830905132800 sont interprétés comme «1983-09-05 13:28:00».
%s
cursor.execute("INSERT INTO table (name, id, datecolumn) VALUES (%s, %s , '%s')",("name", 4,now))