SQL语句怎么写(查询不在这个时间段的内容, 如不在7-8 10-12 2-3点的数据)

2024年11月23日 07:04
有5个网友回答
网友(1):

不在8-9点并且不在10-12点
你这个 不在8-9点, 意思是 8:00-9:00 ? 还是 8:00 - 8:59:59 ?

如果是 8:00 - 8:59:59 , 那么很省事:

不知道是什么数据库
如果是 SQL Server 的话:
WHERE
DATEPART(hh, 日期字段) NOT IN (8, 10, 11)
也就是 小时的数字, 不是 8, 10, 11

如果是 Oracle 的话:
WHERE
TO_CHAR( 日期字段, 'HH24') NOT IN ('08', '10', '11')

如果是 MySQL 的话,更省事了
WHERE
HOUR(日期字段) NOT IN (8,10,11)

如果是 如果是 8:00 - 9:00 , 那么很不省事:
没法简单的截取 日期字段的 小时部分,来处理了。

网友(2):

还是用公式好,不要乱改逻辑
not (( >7 and <8) or (>10 and <12) or ())
这样写起来虽然有些麻烦,但是逻辑不失真,写程序并不是代码越简单越好。

网友(3):

select *
from 表名
where DatePart(hh,时间列) not between 7 and 8

其中时间列是指进行查询判断的列,hh表示小时。

网友(4):

可以取到你的时间的钟点,然后
where hour NOT IN (7,8,10, 11, 12, 14, 15)

网友(5):

select * from 表名
where ( 时间字段 not between 8 and 9 ) and ( 时间字段 not between 10 and 12 )