/// <summary> /// 创建时间查询的SQL片段 /// </summary> /// <param name="FieldName">查询字段名称</param> /// <param name="Op">查询操作符</param> /// <param name="dt">日期时间</param> /// <param name="IgnoreTime">是否忽略时间</param> /// <returns></returns> public virtual string CreateDateTimeSQLSegment(string FieldName, QueryOperatorEnum Op, DateTime dt, bool IgnoreTime) { if (String.IsNullOrEmpty(FieldName)) { throw new ArgumentNullException("FieldName is empty"); } if (Op == QueryOperatorEnum.In || Op == QueryOperatorEnum.Inline || Op == QueryOperatorEnum.Like) { throw new ArgumentException("日期查询不支持当前操作符:" + QueryOperator.ConvertToOperator(Op)); } if (!FieldName.EndsWith(" "))//添加一个空格 { FieldName += " "; } //按照时间精确查询 if (!IgnoreTime) { return(FieldName + QueryOperator.ConvertToOperator(Op) + ConvertDateTimeToSQL(dt)); } //忽略时间,按照日期查询 string Date = dt.ToString("yyyy-MM-dd"); DateTime DtBegin = Convert.ToDateTime(Date + " 00:00:00"); DateTime DtEnd = Convert.ToDateTime(Date + " 23:59:59"); if (Op == QueryOperatorEnum.Equal) //在这一天之内 { return("(" + FieldName + ">=" + ConvertDateTimeToSQL(DtBegin) + " AND " + FieldName + "<=" + ConvertDateTimeToSQL(DtEnd) + ")"); } if (Op == QueryOperatorEnum.Great) //比这一天大 { return(FieldName + ">" + ConvertDateTimeToSQL(DtEnd)); } if (Op == QueryOperatorEnum.Less) //比这一天小 { return(FieldName + "<" + ConvertDateTimeToSQL(DtBegin)); } if (Op == QueryOperatorEnum.GreatAndEqual)//比这一天大,包括这一天 { return(FieldName + ">=" + ConvertDateTimeToSQL(DtBegin)); } if (Op == QueryOperatorEnum.LessAndEqual)//比这一天小,包括这一天 { return(FieldName + "<=" + ConvertDateTimeToSQL(DtEnd)); } if (Op == QueryOperatorEnum.NotEqual)//比这一天小或者比这一天大 { return("(" + FieldName + "<" + ConvertDateTimeToSQL(DtBegin) + " OR " + FieldName + ">" + ConvertDateTimeToSQL(DtEnd) + ")"); } else { throw new ArgumentException("日期查询不支持当前操作符:" + QueryOperator.ConvertToOperator(Op)); } }