目前碰到一个问题 select * from wuliu_data where ruku_day between '2008-12-14' and '2008-12-13'
这样查数据为什么不能查到? select * from wuliu_data where ruku_day between '2008-12-13' and '2008-12-14' 这样就能查到! 那是 为什么? 在如果我要查 当天的信息 select * from wuliu_data where ruku_day between '2008-12-13' and '2008-12-13' select * from wuliu_data where ruku_day = '2008-12-13' 这两种方式都查不到信息!请问这是为什么? 请问我要查当天的信息该如何写sql语句 , 另外 我要查询时间段是 前者日期一定要比后者小,请问有什么方法可以提前判断,已确保传入sql的参数是合格的! 谢谢啦!!
这样查数据为什么不能查到? select * from wuliu_data where ruku_day between '2008-12-13' and '2008-12-14' 这样就能查到! 那是 为什么? 在如果我要查 当天的信息 select * from wuliu_data where ruku_day between '2008-12-13' and '2008-12-13' select * from wuliu_data where ruku_day = '2008-12-13' 这两种方式都查不到信息!请问这是为什么? 请问我要查当天的信息该如何写sql语句 , 另外 我要查询时间段是 前者日期一定要比后者小,请问有什么方法可以提前判断,已确保传入sql的参数是合格的! 谢谢啦!!
解决方案 »
- ASP中出现错误的时候自动跳转到错误页面如何设置
- winform中将pictureBox中的图片导出到excel
- 各位高手,vs2008开发环境中的ajax控件怎么找
- DataGridView 和 DataGridView 有什么区别?
- C#中如何对RTP协议所传送的数据进行接收?
- C#中ListBox选定项的位置上怎么添加一个TextBox
- 为什么主流程序都不是用.net写的
- 隐藏窗口遇到的问题...
- C#中使用GDI+绘图,为了实现异或绘图,调用API的Polydraw,想把用GDI+绘的Path,用异或方式绘出,但Polydraw的参数和值都跟GDI+的path不一
- 请问如何写XML?
- C# 中关于网速的问题??
- 当用WINDOW.OPEN打开新的窗口时,如何不刷新父窗口?
假设你的时间的地方都是DateTimePicker.Value
那么改成DateTimePicker.Value.Date就行了
between把小的时间放前面吧
DateTime endDate = this.dateTimePicker2.Value.ToString("yyyy-MM-dd 23:59:59");if(beginDate.CompareTo(endDate)>0)
{
DateTime tempDate = beginDate;
beginDate = endDate;
endDate = tempDate;
}
string szSQL = string.Format("select * from wuliu_data where ruku_day>='{0}' and ruku_day <='{1}' ", beginDate.ToString(), endDate.ToString()); 这样转换下就可以了
这样查数据为什么不能查到?
select * from wuliu_data where ruku_day between '2008-12-13' and '2008-12-14'
这样就能查到! 那是 为什么?
between 的用法: 某一个值 between A AND B 就是说 某一个值〉=A 某一个值<=B
---------------
在如果我要查 当天的信息
select * from wuliu_data where ruku_day between '2008-12-13' and '2008-12-13'
select * from wuliu_data where ruku_day = '2008-12-13'
这两种方式都查不到信息!请问这是为什么?
这个你用一下convert,也许数据类型比较的不对,
select * from wuliu_data where convert(dateTime,ruku_day,101) between convert(dateTime,'2008-12-13',101) and convert(dateTime,'2008-12-13',101)
select * from wuliu_data where convert(dateTime,ruku_day,101) = convert(dateTime,'2008-12-13',101)
--------------------------------
请问我要查当天的信息该如何写sql语句 :
select * from wuliu_data where convert(dateTime,ruku_day,101) = convert(dateTime,你的值,101)
--------------
另外 我要查询时间段是 前者日期一定要比后者小,请问有什么方法可以提前判断,已确保传入sql的参数是合格的!
if (this.dateTimePicker2.Value > this.dateTimePicker1.Value)
{
/////
}
-------------
还要注意一下你的DateTimePicker的value值 经过DateTimePicker的format 后是否和你数据库里面的字段类型匹配,
select * from wuliu_data where ruku_day=convert(varchar(10),getdate(),120)
结果:2008-12-13
这样不就行了,何必那么麻烦,让系统自己去处理日期RUKU_DAY如果设置成datatime类型(这么写可以,下面那种写法也可以)
using (SqlConnection Connection = new SqlConnection("连接字符串"))
{
SqlDataAdapter DataAdapter = new SqlDataAdapter("SELECT * FROM WULIU_DATA WHERE RUKU_DAY>=@RUKU_DAY1 AND RUKU_DAY<=@RUKU_DAY2", Connection);
DataAdapter.SelectCommand.Parameters.AddWithValue("ruku_day1", Convert.ToDateTime("2008-12-13"));
DataAdapter.SelectCommand.Parameters.AddWithValue("ruku_day2", Convert.ToDateTime("2008-12-14"));
DataTable DT = new DataTable();
DataAdapter.Fill(DT);
// ...
}RUKU_DAY如果设置成varchar类型(只能这么写)
using (SqlConnection Connection = new SqlConnection("连接字符串"))
{
SqlDataAdapter DataAdapter = new SqlDataAdapter("SELECT * FROM WULIU_DATA WHERE RUKU_DAY>=@RUKU_DAY1 AND RUKU_DAY<=@RUKU_DAY2", Connection);
DataAdapter.SelectCommand.Parameters.AddWithValue("ruku_day1", Convert.ToDateTime("2008-12-13").ToString("YYYY-MM-DD"));
DataAdapter.SelectCommand.Parameters.AddWithValue("ruku_day2", Convert.ToDateTime("2008-12-14").ToString("YYYY-MM-DD"));
DataTable DT = new DataTable();
DataAdapter.Fill(DT);
// ...
}
这样不就行了,何必那么麻烦,让系统自己去处理日期RUKU_DAY如果设置成datatime类型(这么写可以,下面那种写法也可以)
using (SqlConnection Connection = new SqlConnection("连接字符串"))
{
SqlDataAdapter DataAdapter = new SqlDataAdapter("SELECT * FROM WULIU_DATA WHERE RUKU_DAY>=@RUKU_DAY1 AND RUKU_DAY<=@RUKU_DAY2", Connection);
DataAdapter.SelectCommand.Parameters.AddWithValue("ruku_day1", Convert.ToDateTime("2008-12-13 00:00:00"));
DataAdapter.SelectCommand.Parameters.AddWithValue("ruku_day2", Convert.ToDateTime("2008-12-14 23:59:59"));
DataTable DT = new DataTable();
DataAdapter.Fill(DT);
// ...
}RUKU_DAY如果设置成varchar类型(只能这么写)
using (SqlConnection Connection = new SqlConnection("连接字符串"))
{
SqlDataAdapter DataAdapter = new SqlDataAdapter("SELECT * FROM WULIU_DATA WHERE RUKU_DAY>=@RUKU_DAY1 AND RUKU_DAY<=@RUKU_DAY2", Connection);
DataAdapter.SelectCommand.Parameters.AddWithValue("ruku_day1", Convert.ToDateTime("2008-12-13 00:00:00").ToString("YYYY-MM-DD HH:mm:ss"));
DataAdapter.SelectCommand.Parameters.AddWithValue("ruku_day2", Convert.ToDateTime("2008-12-14 23:59:59").ToString("YYYY-MM-DD HH:mm:ss"));
DataTable DT = new DataTable();
DataAdapter.Fill(DT);
// ...
}
只是举个例子
实际
DataAdapter.SelectCommand.Parameters.AddWithValue("ruku_day1", Convert.ToDateTime(Var)ToString("YYYY-MM-DD HH:mm:ss"));
1.程序查询里参数是字符串传入的
如果数据库存的是2008-1-1,而你程序查询里参数是字符串'2008-01-01'自然是查不到了的
如果数据库存的是2008-01-01,而你程序查询里参数是字符串'2008-1-1'自然是查不到了的2.程序查询里参数是DateTime传入的
跟当前的长时间格式设置有关,比如一般是2008-1-1这种格式没试过这种情况的结果:
就是如果数据库存的是2008-01-01,而你程序查询里参数是(DateTime的)2008-1-1是不是查得到?所以最好数据库字段设置为datetime类型,这样程序怎么传都可以
如果设置成varchar的话,存数据的时候参数一定要格式化后存入,比如字符串的话要保证为YYYY-MM-DD的,datetime的话要ToString("YYYY-MM-DD")