发布网友 发布时间:2022-04-24 04:31
共4个回答
热心网友 时间:2022-04-10 11:53
非要用between?
sj>=to_date('"+start_time"','yyyy-MM-dd') and sj <=to_date('"+end_date+"','yyyy-MM-dd')+1
解释几个内容
1、为什么要 to_date
这是把字符型的start_time,end_date 转成 yyyy-MM-dd格式时间
因为你输入的数据有可能格式不一致,具体情况看你自己的表结构和提交表单中的日期格式
要同样格式才能进行比较。
2、为什么要 end_date +1呢?
这是因为sj的内容有可能是这样得到的 sj=sysdate ,也就是sj 的值是系统时间,完整格式
为:2008-9-9 11:06:14,带时分秒,因此当你转格式变成 2008-09-09的时候,后面的时分秒
就没有了,变成了默认的 2008-09-09 00:00:00,因此你当前时间是2008-09-09,但是你的
语句判断认为你不在这个时间段中,因为你的:2008-9-9 11:06:14 比 2008-09-09 00:00:00
要大~~~
所以为了保证查询有效,end_date 我习惯是+1的
热心网友 时间:2022-04-10 13:11
"……where sj>=#" & start_time & "# and sj <= #" & end_time & "#"
你的代码好像是正确的,检查一下字段并把start_time和end_time强转成时间变量,再试试吧。
热心网友 时间:2022-04-10 14:46
你的数据库是access还是sqlserver?
access:(sj between #" & start_time & "# and #" & end_time & "#)
sql:(sj between '" & start_time & "' and '" & end_time & "')
热心网友 时间:2022-04-10 16:37
直接用变量来做呀。
declare @dt1 datetime
declare @dt2 datetime
然后betwwen @dt1 and @dt2就可以了呀。