/ / Conversione dei campi data / ora null di SQL Server - sql, sql-server

Conversione dei campi data / ora null di SQL Server - sql, sql-server

Ogni volta che il valore è nullo per questa query

SELECT ISNULL(someDateTime,"")
FROM  someTable

il risultato è

someDateTime ------------ 1900-01-01: 00: 00.000

Voglio che sia "No", quindi se eseguo questo:

SELECT ISNULL(someDateTime,"No")
FROM  someTable

allora c'è questo errore:

Conversione non riuscita durante la conversione di datetime dalla stringa di caratteri.

Come farlo? Grazie in anticipo!

risposte:

6 per risposta № 1

Il risultato dell'espressione dovrà essere un singolo tipo. Se si desidera una stringa di caratteri (e lo si fa, poiché "No" non è un DateTime), sarà necessario convertire il datetime in tale stringa:

SELECT ISNULL(cast(someDatetime as varchar(20)), "No") FROM someTable

Come altri hanno suggerito, però, un codice come questo ha un cattivo odore e potresti voler passare il null a un componente client e fare la conversione lì.


3 per risposta № 2

isnull() sta cercando di convertire il secondo argomento nel tipo di dati del campo specificato nel primo argomento.

Se stai per restituire una stringa devi lanciare il DateTime campo a un tipo di stringa in modo che isnull() può funzionare correttamente - vedi Michael Petrotta "s rispondere per un modo per realizzare questo.


0 per risposta № 3

Stai ancora selezionando una colonna DateTime, e così viail risultato di tale espressione deve ancora essere un valore DateTime anziché una stringa. Per suggerire un work-around appropriato, avremo bisogno di sapere di più su cosa stai realmente cercando di fare con questi dati.


0 per risposta № 4

Non si può "t" direttamente, è più facile intrappolare NULL nel client e modificarlo in "no".

Tuttavia, è possibile utilizzare un valore di token come "17530101" che è un datetime valido o CONVERT SomeDateTime prima di varchar.

Altrimenti, abbiamo bisogno di maggiori informazioni sul perché ecc


0 per risposta № 5

Nell'aggiornamento Proc. Memorizzata: aggiorna il valore della data precedente a un nuovo valore Null:

.Parameters.AddWithValue("@Date_Value", Nothing).IsNullable = True