【问题标题】:How to update empty time in datetime MySQL如何更新日期时间 MySQL 中的空时间
【发布时间】:2020-01-07 13:15:54
【问题描述】:

我们将日期时间存储在 MySQL 数据库的列中,格式为 TEXT,但我们的日期时间应该如下所示:

'xxxx-xx-xx 00:00:00'

时间被删除或不显示在我们的日期时间,因此我们的日期时间,在那个特定的时间,只包含日期:

'xxxx-xx-xx'

我们首先要弄清楚为什么会发生这种情况,但现在我们需要编辑每一行,并确保日期时间也显示时间。我们已尝试使用此查询更改受影响的行:

UPDATE table SET TIME(col_datetime) = '00:00:00' WHERE LENGTH(TIME(col_datetime)) = 0;

上述查询应更新 col_datetime 的日期时间,其中时间长度为 0。不幸的是,我们收到错误,无法运行查询。这是错误:

您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在第 2 行的 '(time_start) = '00:00:00' WHERE LENGTH(TIME(time_start)) = 0' 附近使用正确的语法

如果没有显示时间,我们如何更改日期时间的时间?

【问题讨论】:

  • col_datetime的数据类型是什么?
  • 数据类型为 TEXT @GMB
  • 数据类型是 TEXT... 哎哟!
  • 听起来我应该立即更改此设置?我们正在处理重要且有价值的数据
  • 我应该立即改变这个吗?... 是的,你应该。有适当的日期/日期时间类型

标签: mysql sql date datetime sql-update


【解决方案1】:

不要将日期存储为字符串。相反,您想使用 datetime 数据类型:它有一个时间部分,未指定时默认为 00:00:00

这是一个用于此目的的小型转换脚本:

alter table mytable add col_datetime_new datetime;
update mytable set col_datetime_new = col_datetime;
alter table mytable drop col_datetime;
alter table mytable change column col_datetime_new col_datetime datetime;

这利用了您在字符串日期中使用格式 YYYY-MM-DD 的事实,因此转换为 datetime 是无缝的。

【讨论】:

  • 感谢您的回答!将列上的数据类型从 TEXT 更改为 datetime 时,它​​本身修复了错误。因此没有必要运行这个脚本
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-11-27
  • 2012-12-21
  • 2021-03-16
  • 1970-01-01
  • 2013-06-16
  • 1970-01-01
相关资源
最近更新 更多