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语法也行,自己动手查查