Visualizzazione dei risultati da 1 a 5 su 5

Discussione: between data is null

  1. #1
    Utente di HTML.it L'avatar di arw
    Registrato dal
    Dec 2007
    Messaggi
    149

    between data is null

    Ciao!
    query per Sql server 2005.

    come faccio a dire che deve guardare dove la data è tra DataInizio e DataFine (questa è a null) sono date di uno storico

    codice:
    ....
    AND tr.data >= '01-01-2011' AND tr.data <= '10-24-2011' 
    and tr.data between storico.datainizio and storico.datafine is null
    mi da errore di statement:
    Incorrect syntax near the keyword 'is'.


    dove, cosa sbaglio?

  2. #2
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,326
    Per verificare che un campo sia null si deve usare una funzione: IsNull( nomeCampo ) che restituisce True se il campo è nullo.

    Esempio:

    codice:
    SELECT *
    FROM Tabella
    Where( IsNull(DataFine) );
    Restituisce tutti i record in cui il campo 'DataFine' è nullo.


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  3. #3
    Utente di HTML.it L'avatar di arw
    Registrato dal
    Dec 2007
    Messaggi
    149
    grazie! , ho provato ma mi da questo errore:

    The isnull function requires 2 argument(s).

  4. #4
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,326
    Effettivamente la funzione IsNull richiede due parametri: il campo da testare ed un valore da restituire se il test è confermato. MSDN dice di usare la clausola IS NULL se si intende semplicemente testare se un campo è nullo.

    Riguardando, però, la tua condizione noto ora che effettivamente a te manca un parametro nella BETWEEN. BETWEEN vuole due parametri, tu ne stai usando uno solo.

    La sintassi dell'operatore BETWEEN è questa:

    codice:
    NomeCampo BETWEEN Valore1 AND Valore2
    Nella tua clausola, manca completamente il valore 2 (e la AND di giunzione). La riscrivo con le parentesi e inserendo ciascuna condizione su una riga separata, così vedi l'errore

    codice:
    (tr.data >= '01-01-2011') AND
    (tr.data <= '10-24-2011') AND
    (tr.data between storico.datainizio ???) AND
    (storico.datafine IS NULL)

    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  5. #5
    Utente di HTML.it L'avatar di arw
    Registrato dal
    Dec 2007
    Messaggi
    149
    Ti ringrazio...ok! ora ci sto lavorando e spero di farcela...ma sono positiva!


Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.