先说问题:今天项目中很多模块出现了一个集体性的问题,时间检索时选择同一天 检索不出数据(表中数据确实存在),其实这个问题在做东西的时候领导说过,记忆中我解决了,但是后来写代码可能把这个问题忘记了!
其实解决办法也很简单
解决方案一: 结束时间在代码中默认加一天
//结束时间查询 if (!string.IsNullOrEmpty(endTime)) { where += " and pq_applicant_create_time <='" + Convert.ToDateTime( endTime).AddDays(1) + "'"; }
解决方案二: sql 语句转换时 用 conver 转换 拼接
select * from t_project_quotation where 1=1 and pq_quote_status=50 and pq_applicant_create_time >= CONVERT(nvarchar(10), '2017-05-17',120)+' 00:00:00' and pq_applicant_create_time <=CONVERT(nvarchar(10),'2017-05-17',120 )+' 23:59:59'
但是我再修改的时候发现有个表中 用解决方案一 会检索出两天的数据, 但是另外一个表中 用方案一 没有问题 找了一下数据 原来表一中时间字段我再插入的时候格式化了,即全部为“2017-01-01 00:00:00” 格式
而表二 中的时间插入时 全部是获取当前时间
最后复习一下SQL 的 convert 函数的使用
语法
CONVERT(data_type(length),data_to_be_converted,style)
例句:
CONVERT(VARCHAR(10),GETDATE(),120)