Oi!
É verdade, essa função transforma a coluna em um tipo chamado datetime64
, que é tipo uma linguagem universal para datas no pandas. Dá pra fazer um monte de coisas legais com datas usando esse tipo, tipo calcular diferenças entre datas e extrair o mês.
Mas a pegadinha é que o MySQL não curte esse tipo datetime64
. Ele é meio exigente e quer as datas em formato de string 'AAAA-MM-DD'. Então, a mágica acontece com o dt.strftime('%Y-%m-%d')
, que transforma essa coluna de volta em string, mas no formato que o MySQL curte.
Só fica esperto que, apesar de parecer a mesma coluna, pro pandas e pro MySQL, elas são diferentes. Antes do strftime
, é tipo uma série de números. Depois, vira uma série de strings que se parecem com datas pra gente, mas são tratadas de forma diferente.
Ah, e se tentar extrair o ano depois do strftime
, não rola. Tipo assim:
df_livros["Data da Compra"] = pd.to_datetime(df_livros["Data da Compra"], format="%d/%m/%Y")
print(df_livros["Data da Compra"].dt.year) # Beleza, funciona
df_livros["Data da Compra"] = df_livros["Data da Compra"].dt.strftime("%Y-%m-%d")
print(df_livros["Data da Compra"].dt.year) # Aí não rola, dá erro