or que comparar uma variável de data SQL com nulo se comporta dessa maneir

Acabei de encontrar um problema interessante com um procedimento que estou escrevendo em SQ

No meu processo, tenho duas datas, que são parâmetros opcionais padrão como NULL, quero verificar se esses parâmetros não são nulos e se não executam parte do meu processo, se forem nulos, a parte extra do processo é ignorada.

Eu fiz um @ bastante básiIF(@dateVariable <> NULL AND @DateVariable2 <> NULL), mas a instrução if nunca funciona, mesmo que as variáveis não sejam nulas, eu assumiria que o SQL está lutando para comparar a data com um NULL, o que é estranho, pois o datetime é nul

Para contornar isso, acabei de fazerIF(DateVariable IS NOT NULL) que funciona corretamente. Eu também tenteiIF( ISNULL(@DateVariable,'') <> '') que também funciona corretamente

Então, minha pergunta é por que o primeiro IF não funciona, mas o segundo e o terceiro IF funcionam, pois ambos devem em algum momento comparar o conteúdo da variável como nul

Exemplo

----- Falha -----

DECLARE @Date DATETIME
SET @Date = CURRENT_TIMESTAMP

IF (@Date <> NULL)
BEGIN
    print('a')
END

----- Trabalho ----

DECLARE @Date DATETIME
SET @Date = CURRENT_TIMESTAMP

IF (ISNULL(@Date,'') <> '')
BEGIN
    print('a')
END

DECLARE @Date DATETIME
SET @Date = CURRENT_TIMESTAMP

IF (@Date IS NOT NULL)
BEGIN
    print('a')
END

questionAnswers(4)

yourAnswerToTheQuestion