我晕死……
你知道date类型在数据库中怎么储存的吗?它是以long储存的,
一般只有数据类型才能用between(字符应该也,只是以ASCII码比较了),无论是interger还是char
用< ,> ,=,between有个要求,左右两边类型要一样。
你sxsj是date型
:date1 ,:date2传过来是char型
你可以
select from sxdj where to_char(sxsj) between :date1 and :date2
or
select from sxdj where sxsj between date(:date1) and date(:date2)
select from sxdj where sxsj between to_date(:date1,'yyyy,mm,dd') and to_date(:date2,,'yyyy,mm,dd') 这个你要与注意格式,我只是举例
BETWEEN *** 作符在 WHERE 子句中使用,作用是选取介于两个值之间的数据范围。
BETWEEN *** 作符
*** 作符 BETWEEN AND 会选取介于两个值之间的数据范围。这些值可以是数值、文本或者日期。
SQL BETWEEN 语法
SELECT column_name(s)
FROM table_name
WHERE column_name
BETWEEN value1 AND value2
不同的数据库管理系统对 BETWEENAND *** 作符的处理方式是有差异的。
某些数据库会列出介于 "value1 " 和 "value2" 之间的值,但不包括 "value1 " 和 "value2";某些数据库会列出介于 "value1 " 和 "value2"之间的值并包括 "value1 " 和 "value2";而另一些数据库会列出介于 "value1 " 和 "value2" 之间的值,包括 "value1 " ,但不包括 "value2" 。
1、打开SQLServerManagementStudio管理工具,连接上数据库,创建一张测试表,用于测试Betweenand查询结果是否包含边界值。
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、查询表中的所有测试数据。
selectfromTestBteween;
4、使用betweenand查询Col3数字列在10到40之间的结果,从运行结果可以看出,10、40都包含在了查询结果中,说明betweenand查询结果是包含边界值的。
selectfromTestBteweenwhereCol3between10and40;
5、使用betweenand查询Col3数字列在10到30之间的结果,从结果可以看出,只要等于一个边界值就会查询出来。
selectfromTestBteweenwhereCol3between10and30;
6、使用betweenand查询Col1中文列在第1行到第3行之间的结果,从结果可以看出,也是包含边界值的。
selectfromTestBteweenwhereCol1between'第1行'and'第3行';
7、使用betweenand查询Col2英文列在Hello到World之间的结果,从结果可以看出,也是包含边界值的。
selectfromTestBteweenwhereCol2between'Hello'and'World';
转换一下即可:
sqlserver:
select from tab
where convert(varchar(10),datecol,120)
between '2013-04-15' and '2013-05-04'
oracle
select from tabxxx
where to_char(datecol,'yyyy-mm-dd') between '2013-04-15' and '2013-05-04'
情况是这样的,交叉表查询可以让字段值进行纵向与横向组合汇总展示,其效果类似EXCEL的数据透视表。交叉表查询不属于严格意义上的SQL查询,受其背后算法实现上的限制,ACCESS数据库Jet引擎无法在含有Transform语句的SQL交叉表查询中直接识别对“窗体控件值的引用”。
如果需要在交叉表查询中引用窗体控件值,可以使用两种办法来予以实现。
一种是用VBA代码动态拼写Transform SQL交叉表查询语句,将窗体控件中的具体值引入到查询语句中从而规避数据库引擎无法识别窗体控件引用的限制。这种方法的d性很高,但是编程量比较大且来得复杂,除了要解决SQL语句的拼接问题外,更加麻烦的是要解决查询结果集的展示与输出问题。
另一种方法是编写全局自定义函数,通过相关自定义函数读取相应的窗体控件值,而在交叉表查询中引用该等全局自定义函数,从而迂回实现在交叉表查询中引用窗体控件中的值。这种办法相对简单,缺点是比较死板。下面提供这种办法的具体方案供大家参考:
1) 创建一个模块,取名“模块1”,在该模块下编写下列两个全局自定义函数
Public Function TimeBegin() As DateTimeBegin = Forms!时间测试个数统计!起始日期
End Function
Public Function TimeEnd() As Date
TimeEnd = Forms!时间测试个数统计!结束日期
End Function
保存模块的有关设计;
2)在相关的交叉表查询设计视图中的字段“送样时间”的条件栏填写
Between TimeBegin() and TimeEnd()
也就是分别用全局自定义函数"TimeBegin() "和 "TimeEnd()"替代对窗体控件"Forms!时间测试个数统计!起始日期"和"Forms!时间测试个数统计!结束日期"的引用。
请保存有关交叉表查询设计
注意:运行该交叉表查询前,窗体“时间测试个数统计”必须打开且文本框“起始日期
”和“结束日期”必须填写了正确的日期
以上就是关于sql 语句中between and 查询, 时间参数如何传递全部的内容,包括:sql 语句中between and 查询, 时间参数如何传递、sql语句 BETWEEN AND 检索日期期间内,最大时间点和最小时间点、sql 语句问题,关于BETWEEN AND 和DATE 的等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)