MySQL生成的日期类型的列

时间:2018-08-06 11:23:51

标签: mysql

我使用mysql版本5.7

我有一个设备时间字段datetime

由于某种原因,我想添加一个生成的列,该列仅存储devicetime字段的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

我从this link的MySQL文档中获取了输入。

我当前的表结构是这样的

enter image description here

2 个答案:

答案 0 :(得分:2)

无论出于何种原因,MySQL都需要在表达式周围加上()

ALTER TABLE `mytable ` 
ADD COLUMN  `recorddate` DATE GENERATED ALWAYS AS (date(devicetime)) STORED;

答案 1 :(得分:0)

我想到的一个解决方案是,您可以将 TIMESTAMP 存储到表中。 并且,当尝试在系统中找到任何位置时,可以使用DATE_FORMAT() STR_TO_DATE()函数将实际数据中需要的部分用于任何地方。