RT!
表tb1,
设计
-----------------------------
id,int(10)
logtime,varchar(200)
-----------------------------
记录一条
----------------------------
12,
2009-10.5-29
-----------------------------======================
现在要做的,将id=12的这一个记录中的10.5替换成为11,如何实现啊?
另外其他的还有一些的记录是这样的,2009-11.5-02
也要将这样的替换成为2009-12-02,以为当时的一个人设计数据库的时候竟然将字段设置为了varchar类型了,现在数据库中已经有上百条的记录了,如何才可以让这个自动修改为int(10)类型,这样最好。将时间修改为UNIX_TIMESTAMP()类型,高人请帮忙啊。
表tb1,
设计
-----------------------------
id,int(10)
logtime,varchar(200)
-----------------------------
记录一条
----------------------------
12,
2009-10.5-29
-----------------------------======================
现在要做的,将id=12的这一个记录中的10.5替换成为11,如何实现啊?
另外其他的还有一些的记录是这样的,2009-11.5-02
也要将这样的替换成为2009-12-02,以为当时的一个人设计数据库的时候竟然将字段设置为了varchar类型了,现在数据库中已经有上百条的记录了,如何才可以让这个自动修改为int(10)类型,这样最好。将时间修改为UNIX_TIMESTAMP()类型,高人请帮忙啊。
SELECT
MID(ss,INSTR(ss,'-')+1,LENGTH(ss)-INSTR(REVERSE(ss),'-')-5) AS dd FROM (
SELECT '2009-10.5-29' AS ss) a
其它的应该知道吧
Query OK, 0 rows affected (0.00 sec)mysql>
mysql> select concat(SUBSTRING_INDEX(@x,'-',1) ,'-',
-> CEILING(SUBSTRING_INDEX(SUBSTRING_INDEX(@x,'-',2),'-',-1)) ,'-',
-> SUBSTRING_INDEX(@x,'-',-1)) as newCharDate;
+-------------+
| newCharDate |
+-------------+
| 2009-11-29 |
+-------------+
1 row in set (0.00 sec)mysql>
上百条并不算多,哪怕导出来用EXCEL改好再UPDATE回去也很快。利用上面的方法update tb1 set logtime=concat(SUBSTRING_INDEX(logtime,'-',1) ,'-',
CEILING(SUBSTRING_INDEX(SUBSTRING_INDEX(logtime,'-',2),'-',-1)) ,'-',
SUBSTRING_INDEX(logtime,'-',-1)) ;