I´m trying to change a specific date to a other one in order to compare the hash values of two queries. For that I´m using the CASE statement. But I can´t understand why I´m getting the following error

The column DATE_VALUE has the data type DATE and I´m operating on a Snowflake Database

inconsistent data type for result columns for set operator input branches, expected DATE, got BOOLEAN for expression [{2}] branch {3} 

SQL statement

SELECT COL , CASE WHEN DATE_VALUE = '2021-01-10' THEN DATE_VALUE = CAST('2021-01-11' AS DATE) END AS DATE_VALUE ,HASH( CASE WHEN DATE_VALUE = '2021-01-10'::DATE THEN DATE_VALUE= '2021-01-11'::DATE END , COL , COL , COL , COL , COL , COL , COL ) FROM TABLE1 MINUS SELECT COL , DATE_VALUE , HASH( DATE_VALUE , COL , COL , COL , COL , COL , COL , COL ) FROM TABLE2; 

2 Answers

You have this expression for the second column:

(CASE WHEN DATE_VALUE = '2021-01-10' THEN DATE_VALUE = CAST('2021-01-11' AS DATE) END) AS DATE_VALUE 

The THEN clause is:

DATE_VALUE = CAST('2021-01-11' AS DATE) 

This is a boolean expression, not a date expression. You seem to want:

(CASE WHEN DATE_VALUE = '2021-01-10' THEN CAST('2021-01-11' AS DATE) END) AS DATE_VALUE 

Or:

(CASE WHEN DATE_VALUE = '2021-01-10' THEN '2021-01-11'::DATE END) AS DATE_VALUE 

CASE..WHEN is incorrect.

It should be

CASE WHEN DATE_VALUE = '2021-01-10' THEN CAST('2021-01-11' AS DATE) -- DATE_VALUE = CAST('2021-01-11' AS DATE) returns boolean not date END AS DATE_VALUE 
2

Your Answer

Sign up or log in

Sign up using Google Sign up using Facebook Sign up using Email and Password

Post as a guest

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.