数据库日期格式"08 31 2007 12:00AM"转换

昨天测试那边给我提了一个缺陷,大概是这样的:我们做的软件从版本5.1升级到6.0时,某个单据的审核日期格式展示有问题,

原来这个字段值是“2013-8-7 星期三”,升级完了,变成“08 31 2007 12:00AM”这样了。

环境:

       1.Myeclipse

       2.sqlserver 2005

       3.tomcat

       4.win7 64位

先有表table,字段DCHECKTIME,类型datetime,升级后要求审核日期字段类型修改为varchar(20)。

这就涉及出现一个问题:字段DCHECKTIME,类型datetime修改为varchar(20)类型时,日期格式就发生了变化。

之前是datetime类型,数据默认给你显示成“2013-8-7 星期三”,当类型改为varchar(20)时,数据库默认给你还原成原始日期格式“08 31 2007 12:00AM

同时,还涉及到页面列表读取数据,之前是datetime,可以用

CONVERT(data_type(length),data_to_be_converted,style)
函数转换,但是升级完了类型变成varchar了,就导致convert()函数转换失败。

解决方案一:

修改升级工具,在表table里新增一列,值等于DCHECKTIME列,类型为datetime

升级后,把新增的列值再赋值给DCHECKTIME列,再删除新增的列。

解决方案二:

(因为测试那边发现缺陷有点晚,升级工具没法修改,所以只好采用第二种方案)

发脚本更新升级的历史数据,同时又不能影响新做的单据数据

update t_table set DCHECKTIME=(case charindex('-',DCHECKTIME) 
       when null then convert(varchar(20),CAST(DCHECKTIME as datetime),120)
       when 0 then convert(varchar(20),CAST(DCHECKTIME as datetime),120)
       else DCHECKTIME end )
列表展示的日期数据格式: yyyy-mm-dd hh:mi:ss


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值