|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
先说DDL的分类。有一类DDL,是不需要重建表的,比如加非聚簇索引。这类操作其实不会丢数据,也是在原表上直接操作,对于我们“以恢复数据为目的”的闪回,是可以先忽略的。另外一类,则是会影响到表数据的操作。需求以下:
我要将
20110810081703
20110810081830
转化为:
2011-08-1008:17:03
2011-08-1008:18:30
先创立测试数据:
createtable#T1([col]varchar(20))
insertinto#T1
select20110810081703unionall
select20110810081830unionall
select20110810144626unionall
select20110810092209unionall
select20110810090558unionall
select20110810090600unionall
select20110810141857unionall
select20110810141858unionall
select20110810092837
办法一:使用stuff函数
selectstuff(stuff(stuff(stuff(stuff(col,5,0,-),8,0,-),11,0,),14,0,:),17,0,:)+.000col
from#T1
办法二:使用substring函数
selectconvert(varchar(10),cast(left(col,8)asdatetime),120)+
+substring(col,9,2)+:+substring(col,11,2)+:+right(col,2)ascol
from#T1
转换办法另有良多种,本人渐渐探索吧!目前的方案是用mysqlbinlog工具,增加一个Flashback参数,输出结果为一个新的binlog文件――姑且叫做flashbacklog,这个flashbacklog顺序执行,可制定某张表和执行到哪个pos,来实现数据库的闪回。 |
|