我的声明如下:
SELECT *,
IF (valid_till = "9999-12-31 23:59:59", NOW(), valid_till) as valid_till,
(valid_till - valid_from) as summary
FROM tablename
因此有效直到的输出看起来是正确的,但摘要的值仍然按照" 9999-12-31 23:59:59"
的值来计算如何实现该摘要直接由IF语句生成的valid_till值计算?
谢谢
答案 0 :(得分:0)
使用子查询:
SELECT A.*,(valid_till - valid_from) as summary (SELECT *,
IF (valid_till = "9999-12-31 23:59:59", NOW(), valid_till) as valid_till
FROM tablename) as A
答案 1 :(得分:0)
MySQL允许通过“@”使用内联变量。在处理每个记录时考虑它并且:=分配一个值,你可以使用它作为下一个语句(或列计算)的基础。它必须首先声明,因此只是出于声明目的而成为别名的二级。
SELECT
*,
@UntilVar := IF(valid_till = @baseDate, NOW(), valid_till) as valid_till,
(@UntilVar - valid_from) as summary
FROM
tablename,
( select @UntilVar := now(),
@baseDate := "9999-12-31 23:59:59" ) sqlvars
注意我是根据您的IF()通过:=分配“@UntilVar”。然后@UntilVar - valid_from应该可以满足您的需求。