sql 语句问题,关于BETWEEN AND 和DATE 的
SELECT *
FROM family
WHERE `date`
BETWEEN 2011 -05 -06
AND 2011 -05 -10
ORDER BY `id`
LIMIT 0 , 10 结果显示无记录为什么?我明明有记录 展开
1、打开SQLServerManagementStudio管理工具,连接上数据库,创建一张测试表,用于测试Between...and查询结果是否包含边界值。
CREATETABLETestBteween(
Col1varchar(200)NOTNULL,
Col2varchar(200)NULL,
Col3intNULL
)
2、往测试表TestBetween中插入几行测试数据。
insertintoTestBteween(Col1,Col2,Col3)values('第1行','Hello',10);
insertintoTestBteween(Col1,Col2,Col3)values('第2行','World',20);
insertintoTestBteween(Col1,Col2,Col3)values('第3行',null,null);
insertintoTestBteween(Col1,Col2,Col3)values('第4行','Hello',40);
insertintoTestBteween(Col1,Col2,Col3)values('第5行','World',50);
3、查询表中的所有测试数据。
select*fromTestBteween;
4、使用between...and查询Col3数字列在10到40之间的结果,从运行结果可以看出,10、40都包含在了查询结果中,说明between...and查询结果是包含边界值的。
select*fromTestBteweenwhereCol3between10and40;
5、使用between...and查询Col3数字列在10到30之间的结果,从结果可以看出,只要等于一个边界值就会查询出来。
select*fromTestBteweenwhereCol3between10and30;
6、使用between...and查询Col1中文列在第1行到第3行之间的结果,从结果可以看出,也是包含边界值的。
select*fromTestBteweenwhereCol1between'第1行'and'第3行';
7、使用between...and查询Col2英文列在Hello到World之间的结果,从结果可以看出,也是包含边界值的。
select*fromTestBteweenwhereCol2between'Hello'and'World';
因为2011 -05 -06不是日期,得转化为日期格式,现在只是字符串
没太明白你的意思,为什么说他不是日期,那得怎么才能转化为日期,请指点指点~
sqlserver: BETWEEN convert(datetime,'2011-05-06') and convert(datetime,'2011-05-10')
oracle: to_date('2011-05-06','yyyy-mm-dd') and to_date('2011-05-10','yyyy-mm-dd')
FROM family
WHERE `date`
BETWEEN '2011 -05 -06'
AND '2011 -05 -10'
ORDER BY `id`
LIMIT 0 , 10
这样查肯定有记录