Use o método Python datetime.strftime(format)
, onde 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')))
Fusos horários
Se os fusos horários forem uma preocupação, o fuso horário do MySQL pode ser definido para UTC da seguinte maneira:
cursor.execute("SET time_zone = '+00:00'")
E o fuso horário pode ser definido em Python:
now = datetime.datetime.utcnow().replace(tzinfo=datetime.timezone.utc)
O MySQL reconhece os valores DATETIME e TIMESTAMP nestes formatos:
Como uma string no formato 'AAAA-MM-DD HH: MM: SS' ou 'AA-MM-DD HH: MM: SS'
. Uma sintaxe “relaxada” também é permitida aqui: qualquer caractere de pontuação pode ser usado como delimitador entre as partes da data ou hora. Por exemplo, '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 'são equivalentes.
O único delimitador reconhecido entre uma parte de data e hora e uma parte de segundos fracionários é o ponto decimal.
As partes de data e hora podem ser separadas por T em vez de um espaço. Por exemplo, '2012-12-31 11:30:45' '2012-12-31T11: 30: 45' são equivalentes.
Como uma string sem delimitadores no formato 'AAAAMMDDHHMMSS' ou 'YYMMDDHHMMSS', desde que a string faça sentido como uma data. Por exemplo, '20070523091528' e '070523091528' são interpretados como '2007-05-23 09:15:28', mas '071122129015' é ilegal (tem uma parte de minuto sem sentido) e se torna '0000-00-00 00: 00:00 '.
Como um número no formato AAAAMMDDHHMMSS ou AAMMDDHHMMSS, desde que o número faça sentido como data. Por exemplo, 19830905132800 e 830905132800 são interpretados como '1983-09-05 13:28:00'.
%s
cursor.execute("INSERT INTO table (name, id, datecolumn) VALUES (%s, %s , '%s')",("name", 4,now))