日期:2014-05-18  浏览次数:20460 次

关于一个between查询时间的问题
表中有一字段名为:
TelTime varchar(80)
存的时间格式为:2007-10-10 11:55:55

在txtBox里输入的条件是年月日,即2007-10-10,可是这样查询出来的不是这个时间之内的,比如要查10号到11号的,就必须输入10号到12号才能把11号查出来,如果只输入到11号那只能查出10号的内容来

我写的SQL语句:
C# code

select * from telephone where TelTime between '2007-10-10' and '2007-10-11'



------解决方案--------------------
select * from telephone where Cast(TelTime as datetime) between Cast('2007-10-10' as datetime) and Cast('2007-10-11' as datetime)
------解决方案--------------------
还有中方法:
timeStart= "2007-10-10" + " 00:00:00";
timeEnd= "2007-10-11" + " 24:00:00";

当然这必须要你的时间格式为:2007-10-10 11:55:55 
月份日期两位数, 24hh
------解决方案--------------------
select * from telephone where TelTime between '2007-10-10' and CAST('2007-10-11'
AS DATETIME)+1
------解决方案--------------------
set @start_Date=convert(char(10),@start_Date, 120)+' 00:00:00.000'
set @end_Date=convert(char(10),@end_Date, 120) + ' 23:59:59.000' 
--------------------------\定义变量
select * from telephone where TelTime BETWEEN @start_Date AND @end_Date

------解决方案--------------------
对日查询使用 datadiff
 where datediff(dd,'2007-10-10',teltime)>=0 and datediff(dd, '2007-10-11',teltime)>=0

2007-10-11
值实际上是
2007-10-11 00:00:00:003
你用between and当然取不到 日期为10-11的记录了。
------解决方案--------------------
就是在后面的那个时间作为datetime类型 在+1即可
2007-10-10 -2007-10-10 就是查2007-10-10 00:00:00到2007-10-11 00:00:00
------解决方案--------------------
对日查询使用 datadiff 
SQL code
  where   datediff(dd, '2007-10-10',teltime) >=0   and   datediff(dd, '2007-10-11',teltime) >=0

------解决方案--------------------
用datediff 吧
我以前用between也遇到过这个问题。
------解决方案--------------------
1 你用了varchar 
2 就算用datetiem 2007-10-11 转换成日期 就是2007-10-11 00:00:00 你需要把 23:59:59加上

日期范围放入 前闭后开区间 比较容易理解

所以 容易理解的写法就是 字段 < '2007-10-12' 即小于结束日期加一天