【问题标题】:Adding minutes to datetime on insert - mysql在插入时向日期时间添加分钟 - mysql
【发布时间】:2010-10-08 04:13:38
【问题描述】:

我试过了

INSERT INTO products 
 (product_id, product_type, created_dt, end_dt) 
VALUES 
 ('11', '1', '2010-10-08 00:11:10', DATE_SUB(2010-10-08 00:11:10, INTERVAL 59 Minute))

但这不起作用。在 Mysql 中还有其他方法可以做到这一点吗?

谢谢!

【问题讨论】:

    标签: sql mysql date


    【解决方案1】:

    用途:

    INSERT INTO products 
      (product_id, product_type, created_dt, end_dt) 
    VALUES 
      (11, 
       '1', 
       '2010-10-08 00:11:10', 
        DATE_ADD(STR_TO_DATE('2010-10-08 00:11:10', '%Y-%m-%d %H:%i:%s'), INTERVAL 59 MINUTE)
      )
    

    在 MySQL 5.1.49 上,它不会加/减,因为它没有将字符串隐式转换为 DATETIME 数据类型。所以我不得不use STR_TO_DATE to explicitly convert the string into a DATETIME。否则,MySQL 工作台返回 BLOB...

    【讨论】:

    • @dave:不客气 - 如果我不测试它,我就不会发现这个问题。
    • 其实这似乎是减去了59秒而不是增加了
    • @dave:已更正 - 我想知道为什么标题说“添加”,但您的示例是减法。
    • Duh,因此是 DATE_SUB - 我已将其更改为 DATE_ADD
    【解决方案2】:

    为您的数据库使用timestamp.. 喜欢

    $date = time();
    

    并将此变量作为值保存在您的数据库中。

    如果您想以日期格式检索日期,请在

    中使用此时间戳
    time('M-Y-D',timestamp);
    

    它会将时间戳格式化为日期格式或您放入函数中的格式...

    查看time()here的PHP手册

    【讨论】:

      【解决方案3】:

      试试:

      INSERT INTO products 
       (product_id, product_type, created_dt, end_dt) 
      VALUES 
       ('11', '1', '2010-10-08 00:11:10', '2010-10-08 00:11:10' - INTERVAL 59 Minute)
      

      【讨论】:

      • '2010-10-08 00:11:10' - INTERVAL 59 Minute 在 MySQL Workbench 中返回 BLOB,针对 MySQL 5.1.49
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-31
      • 1970-01-01
      • 1970-01-01
      • 2017-06-21
      • 1970-01-01
      相关资源
      最近更新 更多