В среде Python у меня есть следующая переменная:
post_time_ms="1581546697000"
, которая является Unix -тилемым временем с миллисекундами.
В моей таблице "create_date_time" определено как столбец datetime.
Я пытаюсь использовать оператор INSERT в форме:
sql_insert_query = "INSERT INTO myTable (id_string, text,
created_date_time) VALUES ('identifier', 'text_content',
FROM_UNIXTIME('post_time/1000')"
Я не могу понять, как Я должен это подчеркнуть. Если я запускаю запрос, как показано выше, я получаю:
"Failed to insert record 1292 (22007): Truncated incorrect DECIMAL value: 'post_time/1000'
Я пробовал все варианты одинарных кавычек / без кавычек, о которых я могу думать, но я всегда получаю ошибки.
Для Например, если я сделаю:
sql_insert_query = "INSERT INTO myTable (id_string, text,
created_date_time) VALUES ('identifier', 'text_content',
FROM_UNIXTIME('post_time'/1000)"
Я получу:
Failed to insert record 1292 (22007): Truncated incorrect DOUBLE value: 'post_time'
Я зашел так далеко, что попытался преобразовать значение Unix в стиле "1581546697000" следующим образом:
post_time_mysql = datetime.fromtimestamp(int(post_time)/1000)
, а затем:
sql_insert_query = "INSERT INTO myTable (id_string, text,
created_date_time) VALUES ('identifier', 'text_content',
'post_time_mysql')"
и даже при выводе
print(post_time_mysql)
"2020-02-14 09:25:28",
Я все еще получаю эту ошибку для вышеуказанного запроса:
Failed to insert record 1292 (22007): Incorrect datetime value: 'post_time_mysql' for column `myDatabase`.`myTable`.`created_date_time` at row 1
Любые идеи / предложения?
=========
My Чтобы обойти это, сделайте следующее:
sql_insert_query = "INSERT INTO myTable (id_string, text, created_date_time) VALUES (%s, %s, %s)"
sql_insert_data = (identifier, text_content, post_time_mysql)
cursor.execute(sql_insert_query, sql_insert_data)
Но я все еще не понимаю, как успешно сделать это с помощью одного оператора запроса - если это возможно.