python - 将 INSERT 切换为 REPLACE 会使 DATE_SUB() 结果无效

标签 python mysql python-2.7 python-3.x

我有以下查询工作正常,忽略唯一键:

insert_post = ("""INSERT IGNORE INTO posts 
                SET internal = %s,
                    schedule_date = DATE_SUB(%s, INTERVAL 2 HOUR)
               """)

一旦我将查询切换到REPLACEON DUPLICATE KEY UPDATE,我就会收到以下错误:

mysql.connector.errors.DataError: 1292 (22007): Truncated incorrect datetime value: '2017-08-19T12:45:00-0500'

我知道传入值格式与 MySQL 日期时间列不兼容,但这在我的初始 INSERT 中似乎不是问题。

对我缺少的东西有什么想法吗?

这是一个 SQL fiddle ,但面板不会运行 DDL/DML,因此不要期望比模式更多的内容:http://sqlfiddle.com/#!9/656a3/2

编辑:这是显示复制错误的工作 SQLfiddle:http://sqlfiddle.com/#!9/c13f45/1

最佳答案

所以经过一番尝试后,替换和插入忽略的行为似乎有所不同。插入将截断数据但仍然插入。替换将彻底失败。

您必须为此@eht 使用正确的日期时间格式。

为了提供更多信息,插入忽略会抛出有关数据被截断的警告。替换会引发错误并停止执行。

关于python - 将 INSERT 切换为 REPLACE 会使 DATE_SUB() 结果无效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45493255/

相关文章:

python - 欧拉项目,#7 - Python

python - 是否可以在 Bokeh 中为 checkboxbuttongroup 对象添加标题?

python - 为什么 Windows 上的 Python 无法以二进制模式读取图像?

mysql - Sql查询错误,可能是语法错误

python - 属性错误 : 'module' object has no attribute 'createFisherFaceRecognizer'

django - 将 Django 连接到 Google Cloud SQL

python - 如何从 Apache Spark (pyspark) 的数据集中获取某些列?

python - 有没有像 Ruby 的 Juicer/Sprockets/bundle_fu 这样的 python 库/包?

MySQL 列表查询等于多个值

php - 检索要插入的数据以及插入输入的数据