sql server数据库中有一varchar字段。现要将字段类型修改成datetime类型,由于其中有不规范数据。请问如何转换。同时要将类似20021010的日期转换成2002-10-10,类似2001412转换成2001-4-12或2001-04-12。不规范的可以转换成任一datetime
如:2002-10-12
如:2002-10-12
解决方案 »
- serverSocket与clientSocket连接久了,会自动掉线?
- 怎么才能取到listbox里面数据项的某一个字符串???
- 菜鸟求助:级联删除怎么实现???
- 请问如何定制一个向导窗口???
- “Error Loading midas.dll”是什么原因?
- 那位有playcase2.56以上版本的,高分相送
- 怎样才能在程序中判断shift键和鼠标左键被一起按下?
- 《delphi深度历险》中的一道题!!
- TClientDataSet 右键菜单中Assign local dataset功能用代码怎么实现 ?
- 如何在任意一种打印机上都输出90毫米宽,55毫米高的名片?
- 请问:如何取消QuickReport的打印???
- 再问adoconnection动态连接数据库的问题,给80分,在线恭候您指教!!
说清楚。
帮帮忙
现在要把这些不规范的数据清理或是改成一个正确的日期数据:如2002-12-12,
原有的一些数据如类似:20021212,1999421,20030409的数据改成2002-12-12,1999-4-21,2003-4-9。当所有的值都规范成yyyy-m-d后就可在数据库中将varchar修改成datetime类型了。
我现在要的是如何规范这些数据并尽可能保留格式正确的数据
程序如何实现。(delphi)
写个程序吧。。你的varchar字段中包含多少个有效日期性的数据。
如果多了就有点烦。
可以用formatdatetime('yyyy-mm-dd',date)等来处理。
begin
result:=copy(s,1,4)+'-'+copy(s,5,2)+'-'+copy(s,7,2);
end;
function g(s:string):string;
var :string;
begin
Mark:=DateSeparator;
result:=copy(s,1,4)+Mark+copy(s,5,2)+Mark+copy(s,7,2);
end;
try
strtodate(g('20020202'));
except
删除;
end;
1、先把不规则的值分类,比如:yyyy/mm/dd,yy/mm/dd等分为几类,当然如果还有一些非常特殊的就另外取出特殊处理;
2、把所以这些类分别转换成一种形式;通过SQL就可以了,Update;
3、处理特殊数据,手工来修改,修改为2的形式;
4、最后对统一的形式的值处理就没有难度了吧!