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 № 1Il 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