SQL:查询当前时间在开始时间和结束时间之前为A,当前时间在结束时间之后为B

sql非常初的初学者前来提问啦!想要有点良好的sql体验!求朋友们指点!

直接使用case when 即可实现。
下面以mysql的语法进行示例:
假设开始

SELECT 
    case 
        when now() >= start_time and now() <= end_time then 'A' 
        when now() > end_time then 'B'
        else '其他'
     end
FROM table

使用 case when,类似以下,时间比较部分,要看你用的什么数据库了,数据库存的是什么格式的时间

SELECT  case  when  now()>=开始时间 and now()<结束时间 then A else B end FROM table

SELECT IF(time_field BETWEEN 'start_time' AND 'end_time', 'A', 'B') FROM table

1,Select case when now()>开始
2.and now()<结束
3.then A else B end FROM table

很初级的话直接给个例子 也不一定能理解, 给个实际的场景或者题目 两相对照体验会更好些

查询当前时间在开始时间和结束时间之前为A

应该是之间

select case when 当前时间 between 开始时间 and 结束时间 then 'A'  when 当前时间>结束时间 then 'B' else 'C' End

from Table

 

使用 CASE WHEN ... ELSE ... END 比较贴近问题的需求,以 MySQL 8.0.x 语法举例下:

SELECT (CASE 
        WHEN NOW() BETWEEN '2022-09-13 00:00:00' AND '2022-09-13 23:59:59' THEN 'A'  -- 在指定区间内,返回 A
        WHEN NOW() > '2022-09-13 23:59:59' THEN 'B' -- 大于指定区间结束值,返回 B
        ELSE 'C'    -- 否则(小于指定区间开始值),返回 C
        END) AS date_comp
  FROM 表名;

注意:CASE 语句有两种写法

这个问题值不了这么多米呢,直接把当前时间和结束时间case when比较一下就行了

select case when now()>=开始时间 and now()<结束时间 then A when now()>结束时间 then B end from table

这个问题挺简单的

主要采用 case when 进行判断

如果有什么不清楚的,可以找我

-- 'A or B' 显示别名
select case when NOW()<开始时间 then 'A' when NOW()>结束时间 then 'B' end as 'A or B' from 表名

select case when now() between startTime and endTime then 'A'  when now() > endTime then 'B' else '其他' End from table

请使用case when语法查询

条件语句 可以是用if(字段帅选条件,a,b) ;还可以用case when else then end

oracle的应该可以用decode,mysql可以用field写,各个大哥的case when语法也行,自己动手查查