Beh, sai com'è, cambiando il tipo dati a nvarchar, perdi tutte le funzionalità che un datetime nativo ti da (a meno che poi non lo casti in datetime, sprecando codice e abbassando le prestazioni), vedi operazioni sulle date, come datediff, dateadd, ecc. ecc..
Inoltre, la qualità e l'integrità dell'informazione sono molto minori in quanto in un nvarchar puoi inserire tutto quello che vuoi, e di conseguenza devi aumentare i controlli lato applicazione che esegue l'aggiornamento.
Un altro problema che può emergere a livello di prestazioni è che se per un datetime al massimo ti servono 8byte, per un nvarchar nella forma "ssaa-mm-gg hh:mm:ss.nnn" te ne servono molti di più (quasi 25).. L'occupazione su disco è pure maggiore..
Di solito, se un'informazione deve contenere una data, è giusto che il suo tipo sia datetime.
Al massimo puoi gestire applicativamente la presenza di un testo, quando la data è null, utilizzando la ISNULL(campo, valore).. come ad esempio:
Anche se pure questo è un workaround..
In alternativa potresti (nel caso asp.net 1.0/1.1) controllare il valore della cella in un datagrid e all'itemdatabound cambiarne al volo il valore se esso è null..
In questo modo, lato applicazione hai un semplice resultset da visualizzare.. e il dato rimane integro..
Alx81 =)
http://blogs.dotnethell.it/suxstellino