【发布时间】:2018-03-12 15:27:23
【问题描述】:
由于错误 1292,我的插入失败,日期时间值不正确:'0'
我已经阅读了那个错误,但我看不出我在做什么会触发它。
我要插入的表上的两个日期列都设置为 DATE 格式。这些值的源日期列是 p.date,它是 int(20) 类型。可能与 DATE_ADD 函数有冲突。
我正在尝试将它们转换为带间隔的 YYYY-MM-DD 格式。
谁能指出我在这里做错了什么?
INSERT INTO newTable (
sku_id,
group_id,
customer,
start_date,
expire_date,
quantity,
order_num
)
SELECT
s.id,
s.grpID,
p.cst,
DATE_ADD(DATE_FORMAT(CONVERT( p.date , CHAR (20)), '%Y-%m-%d'),
INTERVAL 7 DAY) AS start_date,
DATE_ADD(DATE_FORMAT(CONVERT( p.date , CHAR (20)), '%Y-%m-%d'),
INTERVAL 127 DAY) AS expire_date,
p.quantity,
p.invoice
FROM
skus s
INNER JOIN
temp p ON s.body = p.body
AND s.cov = p.cov
AND s.col = p.col
WHERE
p.quantity = 1
ORDER BY p.invoice DESC
LIMIT 10;
所以 p.date 有 20160202 而我需要 2016-02-02
【问题讨论】:
-
@hnorman p.date 是一个 INT,您是否在 p.date 中存储自 UNIX 纪元以来的秒数?
-
您能给我们一些示例数据,以便我们尝试重新创建问题吗?谢谢
-
对不起,它是一个整数,所以它存储 20160202 没有小时/分钟/秒
-
SELECT DATE_FORMAT(CONVERT(20160202, CHAR(20)),'%Y-%m-%d');为我返回 2016-02-02。您是否有任何“日期”,其值的格式为 ddmmYYYY,例如02022016?
标签: mysql