2 years ago

#72999

test-img

Pether Cll_

Cast date over null Id's, SQL

I have the following query

SELECT 
    originaltimestamp, 
    userid,
    YEAR(CAST(SUBSTR(originaltimestamp, 1, 10) AS date)) AS year,
    MONTH(CAST(SUBSTR(originaltimestamp, 1, 10) AS date)) AS month,
    ROW_NUMBER() OVER (PARTITION BY userid ORDER BY originaltimestamp DESC) AS RN
FROM 
    table1
WHERE 
    userid IS NOT NULL 
    AND CAST(SUBSTR(originaltimestamp, 1, 10) AS date) BETWEEN date '2018-01-01' AND date '2021-12-31'
GROUP BY 
    1, 2, 3, 4

But now if I try to count all Id's (not null and null), I get the following

SELECT 
    originaltimestamp, 
    userid,
    YEAR(CAST(SUBSTR(originaltimestamp, 1, 10) AS date)) AS year,
    MONTH(CAST(SUBSTR(originaltimestamp, 1, 10) AS date)) AS month,
    ROW_NUMBER() OVER (PARTITION BY userid ORDER BY originaltimestamp DESC) AS RN
FROM 
    table1
WHERE 
    CAST(SUBSTR(originaltimestamp, 1, 10) AS date) BETWEEN date '2018-01-01' AND date '2021-12-31'
GROUP BY 
    1, 2, 3, 4

I get the following error

INVALID_CAST_ARGUMENT: Value cannot be cast to date:

Why doesn't it work when I exclude the condition

WHERE userid IS NOT NULL

And how can I count null ids?

sql

sql-server

null

0 Answers

Your Answer

Accepted video resources