Reputation: 564
I have the following Query:
SELECT IF(TIMESTAMPDIFF(HOUR,users_codes.timestam,CURRENT_TIMESTAMP()) < 48,'no','yes') AS Expired
FROM users_codes
How do I return only rows that have 'no'
?
Upvotes: 3
Views: 159
Reputation: 77778
I believe you can do something like this
SELECT IF( TIMESTAMPDIFF(
HOUR,
users_codes.timestam,
CURRENT_TIMESTAMP()
) < 48, 'no', 'yes') AS Expired
FROM users_codes
HAVING Expired = 'no';
Upvotes: 2
Reputation: 263703
add a WHERE
condition. You cannot use the ALIAS
on the where clause.
SELECT IF(TIMESTAMPDIFF(HOUR,users_codes.timestam,CURRENT_TIMESTAMP()) < 48,'no','yes') AS Expired
FROM users_codes
WHERE IF(TIMESTAMPDIFF(HOUR,users_codes.timestam,CURRENT_TIMESTAMP()) < 48,'no','yes') = 'no'
or use a subquery
SELECT *
FROM
(
SELECT IF(TIMESTAMPDIFF(HOUR,users_codes.timestam,CURRENT_TIMESTAMP()) < 48,'no','yes') AS Expired
FROM users_codes
) s
WHERE Expired = 'no'
Upvotes: 7