擅长:python、mysql、java
<p>“INSERT IGNORE”能够忽略抛出的警告,并使用格式正确的<code>datetime</code>完成插入。你知道吗</p>
<p><code>REPLACE</code>无法忽略格式错误的时间戳,并将导致错误:</p>
<pre><code>mysql.connector.errors.DataError: 1292 (22007): Truncated incorrect datetime value: '2017-08-19T12:45:00-0500'
</code></pre>
<p>解决方案包括<strike>用<code>FROM_UNIXTIME()</code>包装传入的时间戳</strike>解析并重新组织时间戳,如下所示:</p>
<pre><code>schedule_date = datetime.datetime.strptime(item['scheduleDate'], "%Y-%m-%dT%H:%M:%S-%f") # 2017-06-27T08:30:00-0500 -> # 2017-06-27T08:30:00.050000
formatted_schedule_date = schedule_date.strftime('%Y-%m-%d %H:%M:%S')
</code></pre>
<p>工作<code>REPLACE</code>查询如下所示:</p>
<pre><code>INSERT IGNORE INTO posts
SET internal = 1,
schedule_date = DATE_SUB(%s, INTERVAL 2 HOUR)
</code></pre>