【问题标题】:MySQL replace field entry with substring [duplicate]MySQL用子字符串替换字段条目[重复]
【发布时间】:2013-03-08 17:14:23
【问题描述】:

我目前将日期存储在我的数据库中(以字符串格式),当前为 mm/dd/yyyy。

出于排序目的,我需要将所有条目替换为 yyyy/mm/dd。

澄清一下,我是一名 PHP 开发人员,但我的原始 MySql 没有那么强大。我正在考虑通过使用子字符串重新安排日期来做到这一点。 (我首先尝试使用 PHP,但处理这么多数据需要很长时间,大约 50 万行)。

我这样做对吗?如果是这样,我如何“循环”数据,为当前迭代分配我的 substr 变量?

注意:我确实在这里尝试了 str_to_date,但它最终使一半的字段无效。我不完全确定为什么。

非常感谢您的帮助。

【问题讨论】:

  • 您正在寻找插入或更新或选择语句?
  • 这里我们有确切原因 DATE 和 DATETIME 数据类型存在的原因。
  • 为了澄清,我正在寻找一个更新语句(对不起,我应该这么说)我还从带有可变字段的 .CSV 文件中导入数百万行,因此不幸的是,导入为 DATE 不是一个选项。

标签: php mysql date substring


【解决方案1】:

这是一个插入语句

  INSERT INTO yourtable (datefield) VALUES (str_to_date(date, '%Y/%m/%d'));

这是一个更新

 UPDATE Table SET date=STR_TO_DATE('date','%Y/%m/%d')

试试这个

   UPDATE Table SET date = DATE_FORMAT('date', %Y/%m/$d);

【讨论】:

  • 我完全按照书面方式尝试了您的更新语句,并且该字段的所有行现在都为 NULL。想法?
  • 看看我的更新答案
  • 它仍在使数据无效。很奇怪。但是下面的 Matts 回答效果很好,所以我可以接受。
【解决方案2】:

如果您的列采用一致的 mm/dd/yyyy 格式,我相信这会起作用

UPDATE mytable
SET date = CONCAT(right(date,4), '/', left(date,5))

【讨论】:

  • 这太完美了。正是我想要的,谢谢。
猜你喜欢
  • 2014-11-05
  • 2022-01-07
  • 2017-07-02
  • 2012-07-23
  • 2013-05-18
  • 1970-01-01
  • 2018-03-26
  • 2014-07-15
  • 1970-01-01
相关资源
最近更新 更多