【问题标题】:DATE ADD function error in workbench工作台中的 DATE ADD 函数错误
【发布时间】: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


【解决方案1】:

如果p.date 是从纪元开始的秒数,并且您想返回YYYY-MM-DD,那么我会将您的DATE_ADD 函数更改为以下内容:

DATE( FROM_UNIXTIME(p.date) + INTERVAL 7 DAY ) as start_date,
DATE( FROM_UNIXTIME(p.date) + INTERVAL 7 DAY ) as start_date,

【讨论】:

    猜你喜欢
    • 2020-11-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-07
    • 2021-02-01
    • 2017-10-19
    • 1970-01-01
    • 2016-05-28
    相关资源
    最近更新 更多