dqsk4643 2014-05-07 00:07
浏览 15
已采纳

if语句在mysql查询中

Hi I tried creating an if statement inside a mysql query but I dont know where I went wrong. What I tried to do is to deduct 8 from a column value if that column value is more than 8 hours. Here' what I have done so far

$sql="UPDATE timekeeping SET actualend = timestamp(NOW()), logoutdate = date(NOW()),
totalhours = ((SELECT sum(time_to_sec(timediff(actualend,actualstart))/3600) AS
'totalhours') - 1.50), 
excesstime = (if (totalhours > 8) 
   {
excesstime = (totalhours - 8);
   }
)  WHERE actualend IS NULL and fullname = '$loginuser[fullname]'";

So if I show a table like the one below

time in, timeout, totalhours, excesstime respetively

9:00:00 | 18:00:00 | 9 | 1 <------this should be the answer(1)

Sorry abut this but I'm so new in mysql as well as in php.

  • 写回答

1条回答 默认 最新

  • dongtuo1482 2014-05-07 00:13
    关注

    You're attempting to use a flow control statement in your query, where you actually need a flow control function. Use the if() function instead.

    Try this:

    $sql="UPDATE timekeeping SET actualend = timestamp(NOW()), logoutdate = date(NOW()),
    totalhours = ((SELECT sum(time_to_sec(timediff(actualend,actualstart))/3600) AS
    'totalhours') - 1.50), 
    excesstime = if(totalhours > 8,totalhours-8,0)
      WHERE actualend IS NULL and fullname = '$loginuser[fullname]'";
    

    The flow control statements are used in stored procedures, triggers, etc. and aren't valid in single-line queries.

    MySQL reference here

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 BP神经网络控制倒立摆
  • ¥20 要这个数学建模编程的代码 并且能完整允许出来结果 完整的过程和数据的结果
  • ¥15 html5+css和javascript有人可以帮吗?图片要怎么插入代码里面啊
  • ¥30 Unity接入微信SDK 无法开启摄像头
  • ¥20 有偿 写代码 要用特定的软件anaconda 里的jvpyter 用python3写
  • ¥20 cad图纸,chx-3六轴码垛机器人
  • ¥15 移动摄像头专网需要解vlan
  • ¥20 access多表提取相同字段数据并合并
  • ¥20 基于MSP430f5529的MPU6050驱动,求出欧拉角
  • ¥20 Java-Oj-桌布的计算