我正在尝试根据时间值计算一列,如果我应该使用If条件或Case,我不确定最好使用什么?
这是我的专栏
| Time_In | Time_Out | Val1 | Val2 |
| 2014-07-19 04:00:04 | 2014-07-19 08:00:00 | 5 | 15 |
我想要做的是,如果时间是,如果时间在'08:00:00'到'17:00:00'(营业时间)之间,它将自动乘以Val1和Val2 < /强>
如果时间是'18:00:00'到'23:00:00'(营业时间之后)
我能够立即获得的唯一一步就是在时间戳中获取时间因为这将是我要比较的内容
`SELECT date_format(STR_TO_DATE(Time_In, '%Y-%m-%d %H:%i:%s'), '%H:%i:%s')
Output: 04:00:04
`SELECT date_format(STR_TO_DATE(Time_Out, '%Y-%m-%d %H:%i:%s'), '%H:%i:%s')
Output: 08:00:00
我应该如何构建它?
感谢您的帮助
我首先尝试使用if条件,这是有效的:)
SELECT
IF(`Time_In` >= CAST('13:00:01' AS time) AND `Time_Out` <= CAST('15:00:00' AS time),(Val11 * Val2),'false')
FROM table WHERE ID = '5'
获得输出75
:D
答案 0 :(得分:0)
正如您所假设的那样,您可以使用CASE结构。
所以你可以这样做,这里有
的示例值'2014-07-19 12:00:00'
'2014-07-19 18:00:00'
使用此语句(当然,您只需要一个CASE构造):
SELECT
CASE
WHEN Time(STR_TO_DATE('2014-07-19 12:00:00', '%Y-%m-%d %H:%i:%s')) BETWEEN '04:00:00' AND '17:00:00'
THEN Val1 * Val2
ELSE NULL
END result,
CASE
WHEN Time(STR_TO_DATE('2014-07-19 18:00:00', '%Y-%m-%d %H:%i:%s')) BETWEEN '04:00:00' AND '17:00:00'
THEN Val1 * Val2
ELSE NULL
END result2
FROM
example;
<强> DEMO 强>