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

来源:互联网 发布:网络优化就业前景 编辑:程序博客网 时间:2024/06/05 06:06

昨天测试那边给我提了一个缺陷,大概是这样的:我们做的软件从版本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


原创粉丝点击