代码之家  ›  专栏  ›  技术社区  ›  Lakshman Pilaka

MySQL生成的日期类型列

  •  1
  • Lakshman Pilaka  · 技术社区  · 8 年前

    我使用的是mysql版本5.7

    我有场设备时间 datetime 字段。

    出于某种原因,我想添加一个生成的列,该列只存储 date 设备时间字段的一部分。

    我试过下面的陈述

    alter table mytable
    add COLUMN recorddate date generated always as date(devicetime) stored;
    

    我有个错误

    [Err] 1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near  'date(devicetime) stored' at line 2
    

    我从MySQL文档中获取了来自 this link .

    我现在的表结构是这样的

    enter image description here

    2 回复  |  直到 8 年前
        1
  •  3
  •   Vatev    8 年前

    不管出于什么原因,MySQL需要一些 () 在表达式的周围:

    ALTER TABLE `mytable ` 
    ADD COLUMN  `recorddate` DATE GENERATED ALWAYS AS (date(devicetime)) STORED;
    
        2
  •  0
  •   halfer Jatin Pandey    8 年前

    我想到的一个解决办法是,你可以储存 TIMESTAMP 进入桌子。 当你试图在你的系统中找到任何你可以使用的地方 DATE_FORMAT() STR_TO_DATE() 函数的任何部分,你需要从实际数据。