mysql - 如何在 mysql 存储过程中使用 case-when 语句?

标签 mysql timestamp procedures case-when

我想使用 request_time 参数自动设置 session_id,因此我选择了包含 case 语句的 mysql 存储过程。如下。

create procedure upd_userinput(in  request_time timestamp, out user_session_id int) 

begin 

update user_input;

case request_time

when time(request_time) < '9:15:00' && time(request_time) > '8:15:00' 
then set user_session_id = 1; 

when  time(request_time)< '10:15:00' && time(request_time) > '11:15:00' 
then set user_session_id =2; 

end case; 
end
//

但是我在//之后输入时收到 1064 错误。我检查了 mysql 文档,我认为 case 语法是正确的。

请帮忙。

最佳答案

delimiter //

create procedure upd_userinput(in request_time TIMESTAMP,out time TIME, out user_session_id INT)     

begin      

set time = time(request_time);    

case  
when time < '09:15:00' && time > '08:15:00' then      
set user_session_id = 1; 

when time < '10:15:00' && time > '11:15:00' then
set user_session_id = 2;  

else set user_session_id =3;

end case;  
end //

关于mysql - 如何在 mysql 存储过程中使用 case-when 语句?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59510106/

相关文章:

计算 C 函数的运行时间

mysql - 如何在特定时间执行 mysql 事件而不使用 if

php - 出于角色目的,在每个 http 请求上使用现有表名创建 mysql View

mysql - 使用 count 函数对两个表中的记录进行计数,即使计数为零也返回相同的记录

r - 查找两个数据帧之间最接近的时间戳,并在时间差 < 60 秒时合并不同的列

php - 这是什么时间格式以及如何在 php 中将其转换为 unix 时间?

mysql - 如何在 Laravel 的 MySQL 中通过查询插入 [Spatial Point] 值

java - 将数据插入数据库 - SQLException

php - 无法将日期字符串列表转换为时间戳并获取平均值

mysql - 在 MySQL 存储过程中使用用户定义变量设置表名