I have a table like this:
x
| id | token_date |
|----|------------|
| 10 | 2020-03-24 |
| 14 | 2020-03-25 |
| 16 | 2020-03-26 |
| 9 | 2020-03-26 |
| 21 | 2020-03-27 |
| 25 | 2020-03-28 |
But when I execute this query:
SELECT token_date = CURRENT_DATE AS "is_equal",
CASE
WHEN token_date=CURRENT_DATE THEN 'TODAY'
ELSE token_date
END AS "result"
FROM DATA
I get this result:
| is_equal | result |
|----------|------------|
| false | 2020-03-24 |
| false | 2020-03-25 |
| true | 2020-03-26 |
| true | 2020-03-26 |
| false | 2020-03-27 |
| false | 2020-03-28 |
I would expect that in the rows where is_equal
is true
, the result should be TODAY
. What am I doing wrong?
Advertisement
Answer
Nevermind, I solved it, but I don’t want to discard the question. The solution is to CAST(token_date as varchar)
in the else clause
Edit: See @a_horse_with_no_name ‘s comment – it is better to use the to_char
function to format the date to get a consistent output.
E.g. to_char(token_date, 'yyyy-mm-dd')