开发者社区 问答 正文

问一个mysql过虑的问题。怎么过虑掉数数里面的- 这个字符:报错

问一个mysql过虑的问题。怎么过虑掉数数里面的- 这个字符
数据库的时间格式是:2011-01-01  是年,月,日全部显示出来。但是现在我想只要年,月并具保存格式为:201101  这样。
现在数据库的样子是这样的

就是上面的:newspath 字段的存放样子。我现在想把newspath字段的样式改成只保存,年,月并具去掉里面的- ,如这样:201001 这样子。

请问怎么写mysql语句能做到或用什么办法可以解决? 多谢

类似这样的:update phome_ecms_news set newspath='Ym'; 这样的代码怎么写。多谢了

展开
收起
kun坤 2020-06-09 14:04:25 515 分享 版权
1 条回答
写回答
取消 提交回答
  • SELECT DATE_FORMA T(str_to_date("2010-11-23",'%Y-%m-%d'), "'%Y-%m") ######格式化时间或者replace######。。无语了,你先把这个字符串用函数转换成日期,然后再把日期重新格式化一下,不就好了?######可以试试字符串截取函数######

    引用来自“庄开源”的评论

    可以试试字符串截取函数 怎么 截取呢?能写个代码不。我不太会。######可以参考select CONCAT( substring('2011-01-01', 1,4) , substring('2011-01-01', 6,2) ) 但是性能我没去考虑######update phome_ecms_news set newspath=DATE_FORMAT(newspath, '%Y%m'); ###### 先修改该字段的数据类型int或varchar alter table 表名 modify 字段 varchar(10) ; 之后修改数据 update 表名 set time=replace('字段','-',''); ###### alter table phome_ecms_news add column tmp_date varchar(6) null; update phome_ecms_news set tmp_date =DATE_FORMAT(newspath, '%Y%m'); alter table phome_ecms_news modify newspath varchar(6) null; update phome_ecms_news set newspath = tmp_date; alter table phome_ecms_news drop column tmp_date;
    ######函数,前提是这个字段没有索引######

    引用来自“fxhover”的评论

    update phome_ecms_news set newspath=DATE_FORMAT(newspath, '%Y%m'); 这个可以。多谢啊
    2020-06-09 14:22:35
    赞同 展开评论