SQL查某个时间段的记录

发布网友 发布时间: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就可以了呀。

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com