电脑设置区域不同而导致查询数据库带时间条件的错误
2010-12-31 15:05
429 查看
今天偶然发现由于电脑设置的区域不同,而导致时间格式不一致,从而拼接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'。
如果需要带小时、分之类的,也是同样的道理。
如下例:
区域选项里日期格式选择成短日期格式: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'。
如果需要带小时、分之类的,也是同样的道理。
相关文章推荐
- DataPackage-数据库、表的区域设置和系统不一致导致处理失败
- 本机时间设置错误导致Cookie过期
- 定时发邮件(ASP.net中每隔一定时间查询数据库表,并根据表里面的条件发送邮件)
- 根据查询条件开始时间、结束时间查询数据库,并且数据库中也包含开始时间、结束时间字段
- 又一例SPFILE设置错误导致数据库无法启动
- 数据库的联合查询及服务器时间登陆错误时间的间隔
- sql中外连接条件位置不同导致的查询结果不过
- 又一例SPFILE设置错误导致数据库无法启动
- DataPackage-数据库、表的区域设置和系统不一致导致处理失败
- 牛腩购物33:发布网站,将网站上传到外网,讲数据库发布到远程服务器,如何在服务器上开数据库,更换电脑后微软企业库报错,网站异常后发送错误信息到指定邮箱,设置错误页
- 数据库设置缺陷导致的MySQL查询不准确问题
- 又一例SPFILE设置错误导致数据库无法启动
- Linq从两个edmx(两个数据库)中选取数据进行查找出现错误解决 (指定的 LINQ 表达式包含对与不同上下文关联的查询)
- CodeIgniter需要注意错写查询条件导致数据库索引失效的问题
- ThinkPHP查询数据库时各种条件设置
- 数据库时间没有同步导致标的状态显示错误
- MySQL 设置数据按条件查询下的序号 并存入数据库
- CAS 登录成功后返回的值实现根据不同的条件查询不同的表或者数据库
- sq更新语句条件子查询中有分组统计的sql,导致错误1093
- 数据库中包含开始时间、结束时间,并且查询条件也有开始时间、结束时间的查询方法