从文本列创建时间戳虚拟列
Create a timestamp virtual column from a text column
我需要在 MySQL table 中添加一个虚拟列,用于存储从另一列(属于同一 table)生成的时间戳值。
我无法将我现有的列转换为时间戳,因为它可能会破坏许多其他进程,因此,为了更快地查询我的数据库,我需要一个具有相同数据但格式正确的列。
我尝试创建一个默认值为
的虚拟列
TIMESTAMP('field_date_text')
但结果是NULL
。 'field_date_text'
字段的格式为 "d/m/Y H:i"
从另一个字段添加虚拟列作为时间戳的正确语法是什么?
您可以使用 TIMESTAMP()
或 UNIX_TIMESTAMP()
and/or STR_TO_DATE()
:
TIMESTAMP(STR_TO_DATE(field_date_text, '%d/%m/%Y %h:%i'))
或
UNIX_TIMESTAMP(STR_TO_DATE(field_date_text, '%d/%m/%Y %h:%i'))
或 STR_TO_DATE()
:
STR_TO_DATE(field_date_text, '%d/%m/%Y %h:%i')
我用这个函数作为虚拟计算值解决了
TIMESTAMP(str_to_date('field_date_text','%d/%m/%Y %H:%i'));
我需要在 MySQL table 中添加一个虚拟列,用于存储从另一列(属于同一 table)生成的时间戳值。
我无法将我现有的列转换为时间戳,因为它可能会破坏许多其他进程,因此,为了更快地查询我的数据库,我需要一个具有相同数据但格式正确的列。
我尝试创建一个默认值为
的虚拟列TIMESTAMP('field_date_text')
但结果是NULL
。 'field_date_text'
字段的格式为 "d/m/Y H:i"
从另一个字段添加虚拟列作为时间戳的正确语法是什么?
您可以使用 TIMESTAMP()
或 UNIX_TIMESTAMP()
and/or STR_TO_DATE()
:
TIMESTAMP(STR_TO_DATE(field_date_text, '%d/%m/%Y %h:%i'))
或
UNIX_TIMESTAMP(STR_TO_DATE(field_date_text, '%d/%m/%Y %h:%i'))
或 STR_TO_DATE()
:
STR_TO_DATE(field_date_text, '%d/%m/%Y %h:%i')
我用这个函数作为虚拟计算值解决了
TIMESTAMP(str_to_date('field_date_text','%d/%m/%Y %H:%i'));