前言
此篇文章标题实在很难下,所以我需要描述一下情境。因最近接手一个国外的Project,首先必须先将开发环境建置起来,但有关日期的程序写法,都是在C#将Datetime直接ToString,然后这个string直接丢到SP去处理,正式环境都跑得好好的,测试环境在DB就发生了日期转型错误的Exception。
还原&调试
在C#里,会产生出类似这种string,Response的结果会是2013/5/25 上午 00:21:25这种格式
之后这个string,会丢到SP做一些处理,这种格式就会发生错误
当然可以修改程序,让ToString时可以自己指定格式,如下图
但整个工程太浩大,暂时不想花那么多时间去重构程序,因DataTime的时间,是抓该台Server的日期设定格式,故朝着修改Server设定的想法去做,让测试环境能Run起来,而到时因正式环境会全是英文,故比较不会出现有中文字符串之问题。
首先先到控制面板>时间语言语和区域>地区及语言
调整日期格式,将tt hh:mm调整为HH:mm: ss(24小时制)
照理修改完后,去页面执行应该会是输出此格式,但发现还是没变(重开机也一样)
真的很诡异,后来发现登录档的值根本没变,故直接朝着他下手…在执行窗口输入执行regedit.exe
进入底下路径,将sShortTime及sTimeFormat的tt格式拿掉,之后再重开机
如此在页面上,Response出来就会是2013/5/25 00:33:29这种格式,丢进SP也不会出错了
后记
其实看不同国家的Code还蛮有趣的,会考虑到语系、编码之类的问题,在看这些Code也觉得这些小地方可能要再多考虑一点,如Datetime还是把他格式标准化比较好。
原文:大专栏 [MS SQL]含有上午or下午字符串转成DateTime之错误处理
原文地址:https://www.cnblogs.com/chinatrump/p/11490971.html