[MS SQL]含有上午or下午字符串转成DateTime之错误处理

[MS SQL]含有上午or下午字符串转成DateTime之错误处理


前言

此篇文章标题实在很难下,所以我需要描述一下情境。因最近接手一个国外的Project,首先必须先将开发环境建置起来,但有关日期的程序写法,都是在C#将Datetime直接ToString,然后这个string直接丢到SP去处理,正式环境都跑得好好的,测试环境在DB就发生了日期转型错误的Exception。

还原&调试

在C#里,会产生出类似这种string,Response的结果会是2013/5/25 上午 00:21:25这种格式

image

之后这个string,会丢到SP做一些处理,这种格式就会发生错误

image

当然可以修改程序,让ToString时可以自己指定格式,如下图

image

但整个工程太浩大,暂时不想花那么多时间去重构程序,因DataTime的时间,是抓该台Server的日期设定格式,故朝着修改Server设定的想法去做,让测试环境能Run起来,而到时因正式环境会全是英文,故比较不会出现有中文字符串之问题。

首先先到控制面板>时间语言语和区域>地区及语言

image

调整日期格式,将tt hh:mm调整为HH:mm: ss(24小时制)

QQ截图20130523143252 QQ截图20130523143309

照理修改完后,去页面执行应该会是输出此格式,但发现还是没变(重开机也一样)

真的很诡异,后来发现登录档的值根本没变,故直接朝着他下手…在执行窗口输入执行regedit.exe

image

进入底下路径,将sShortTime及sTimeFormat的tt格式拿掉,之后再重开机

image

如此在页面上,Response出来就会是2013/5/25 00:33:29这种格式,丢进SP也不会出错了

image

后记

其实看不同国家的Code还蛮有趣的,会考虑到语系、编码之类的问题,在看这些Code也觉得这些小地方可能要再多考虑一点,如Datetime还是把他格式标准化比较好。

原文:大专栏  [MS SQL]含有上午or下午字符串转成DateTime之错误处理


猜你喜欢

转载自www.cnblogs.com/chinatrump/p/11490971.html
ms