今天偶然发现由于电脑设置的区域不同,而导致时间格式不一致,从而拼接sql查询时出错的。
如下例:
区域选项里日期格式选择成短日期格式:yy-MM-dd。比如当前时间是2010/12/31, 那么它显示得到的时间就会是10/12/31。
如果代码里面有个sql拼接的过程
。
拼接出的结果就是select * from table where date_time = '10/12/31'; (数据库会把'10/12/31'当成'0010/12/31')从而不能得出正确的结果。
对于程序运行的电脑区域性不同,我发现这种写法是相当危险的。在以前,我会先把当前程序运行的区域环境设置成我们需要的环境,但今天我灵活的运用了DateTime.ToString()的重载函数,把上面的代码改成如下:
这样就能正确的得到sql: select * from table where date_time = '2010/12/31'。
如果需要带小时、分之类的,也是同样的道理。