您的位置:首页 > 数据库

电脑设置区域不同而导致查询数据库带时间条件的错误

2010-12-31 15:05 429 查看
今天偶然发现由于电脑设置的区域不同,而导致时间格式不一致,从而拼接sql查询时出错的。

如下例:

区域选项里日期格式选择成短日期格式:yy-MM-dd。比如当前时间是2010/12/31, 那么它显示得到的时间就会是10/12/31。

如果代码里面有个sql拼接的过程

DateTime dtime = DateTime.Now;
string strSql = "select * from table where date_time =" + dtime;

拼接出的结果就是select * from table where date_time = '10/12/31'; (数据库会把'10/12/31'当成'0010/12/31')从而不能得出正确的结果。

对于程序运行的电脑区域性不同,我发现这种写法是相当危险的。在以前,我会先把当前程序运行的区域环境设置成我们需要的环境,但今天我灵活的运用了DateTime.ToString()的重载函数,把上面的代码改成如下:
DateTime dtime = DateTime.Now;
string strSql = "select * from table where date_time =" + dtime.ToString("yyyy-MM-dd");

这样就能正确的得到sql: select * from table where date_time = '2010/12/31'。

如果需要带小时、分之类的,也是同样的道理。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐