首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SQL BETWEEN语句仅返回匹配结果

SQL BETWEEN语句仅返回匹配结果
EN

Stack Overflow用户
提问于 2021-09-30 10:19:21
回答 2查看 51关注 0票数 0

我正在使用SQL Oracle DB,在使用SQL Between语句时遇到问题。我需要搜索日期和时间范围之间的值。当我使用下面的SQL语句时,我只接收匹配的结果或空集,但我需要的结果介于包含传递值的值之间。

代码语言:javascript
复制
select id,date 
from Table_name 
where date between '2020-10-21 10:00:17' AND '2017-10-21 22:00:17' 
  and id = '123';

我收到的是空集

输出示例应为

代码语言:javascript
复制
ID       DATE
123    2020-10-21 10:00:17
123    2020-09-07 09:87:22
123    2018-06-09 07:58:01
123    2017-08-12 08:00:10

有人能建议在sql语句中修改哪些内容吗

EN

回答 2

Stack Overflow用户

发布于 2021-09-30 10:23:07

尝试在SQL语句中将这两个日期值互换。

解释:此语句中的between表示:

代码语言:javascript
复制
date >= '2020-10-21 10:00:17' and date <= '2017-10-21 22:00:17'

正确的说法是:

代码语言:javascript
复制
select id, date
  from Table_name
 where date between '2017-10-21 22:00:17' and '2020-10-21 10:00:17'
   and id = '123';
票数 2
EN

Stack Overflow用户

发布于 2021-09-30 11:27:47

您有两个问题:

  1. 您希望在BETWEEN子句中的上限之前得到范围的下限;
  2. 您不是在日期-时间范围上进行比较,而是在字母数字字符串比较上进行比较。这是因为BETWEEN子句中的值是字符串文字,而不是DATE值。

您希望在BETWEEN子句中使用DATE值:

代码语言:javascript
复制
select id,
       date_column
from   Table_name
where  date_column BETWEEN DATE '2017-10-21' + INTERVAL '22:00:17' HOUR TO SECOND
                       AND DATE '2020-10-21' + INTERVAL '10:00:17' HOUR TO SECOND
and    id = '123';

代码语言:javascript
复制
select id,
       date_column
from   Table_name
where  date_column BETWEEN TIMESTAMP '2017-10-21 22:00:17'
                       AND TIMESTAMP '2020-10-21 10:00:17'
and    id = '123';

代码语言:javascript
复制
select id,
       date_column
from   Table_name
where  date_column BETWEEN TO_DATE('2017-10-21 22:00:17', 'YYYY-MM-DD HH24:MI:SS')
                       AND TO_DATE('2020-10-21 10:00:17', 'YYYY-MM-DD HH24:MI:SS')
and    id = '123';

如果您使用字符串文字,并且NLS_DATE_FORMAT会话参数不匹配,则会得到一个错误:

代码语言:javascript
复制
select id,
       date_column
from   Table_name
where  date_column between '2017-10-21 22:00:17' and '2020-10-21 10:00:17'
and    id = '123';

输出:

ORA-01861:文本与格式字符串不匹配

db<>fiddle

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69390485

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档