如何检查时间是否不在select中的两个时间条目之间

n9vozmp4  于 2022-11-04  发布在  PostgreSQL
关注(0)|答案(2)|浏览(138)

我在PostgreSQL中有两列存储时间值(H:M:S),我使用SQLAlchemy。我如何使用SQLAlchemy对不在这两个值之间的值进行选择?
例一:

  • 询问中的当前时间= 10:00:01
  • 开始时间= 16:00:12
  • end_time = 22:00:00返回值,因为超出了此时间间隔

二:

  • 当前时间= 10:00:01
  • 开始时间= 07:00:12
  • end_time = 22:00:00不返回任何内容,因为在此时间间隔内。
p4rjhz4m

p4rjhz4m1#

SELECT CASE
         WHEN start_time <= current_time and end_time >= current_time
         THEN current_time
         ELSE NULL :: time
       END 
  FROM your_table
q0qdq0h2

q0qdq0h22#

将求反运算符NOTBETWEEN一起使用。

select '10:00:01'::time not between '16:00:12'::time and '22:00:00'::time;
 ?column? 
----------
 t

 select '10:00:01'::time not between '07:00:12'::time and '22:00:00'::time;
 ?column? 
----------
 f

要从表中进行选择,您需要类似以下的内容:

select time_col from the_table where time_col not between '16:00:12'::time and '22:00:00'::time;

--or

select time_col from the_table where time_col not between '07:00:12' and '22:00:00'::time;

关于SQLAlchemy,请参见介于:
从sqlalchemy导入介于
stmt =选择(用户表).where(介于(用户表. c.标识,5,7)之间)
我相信否定它的方式应该是:
select(users_table).where(~between(users_table.c.id, 5, 7))

相关问题