salve,
andreapavia ha scritto:
sto creando a manina una tabella da SQL ENTRPRISE MANAGER dove ho un campo DATA_MODIFICA che deve essere not null
creando la tabella deseleziono il flag NUT NULL e metto come valore predefinito 01/01/2006
nel momento in cui apro la tabella vuota,,, inserisco i campi obbligatori tranne la data in questione (lasciandola inserire dal sistema),,, a questa data viene assegnato valore 01/01/1900
OVVIEMENTE LA COSA NON VA BENE,,, COME SI FA A FARGLI TENERE LA DATA PREDEFINITA????
grazie 1000
come legnaste gia' ha indicato, hai fornito il default in maniera non corretta... per un insieme di motivi..
il primo e' chiaramente sintattico, infatti 01/01/2006, passato come lo hai presentato, e' (potenzialmente) un intero diviso un altro intero diviso un altro intero ancora, cioe' 1 diviso 1 diviso 2006, che chiaramente ritorna 0, e quindi SQL Server utilizza la data che lui identifica cono il valoro intero 0, che appunto e' il primo gennaio 1900...
avresti dovuto quindi passare un valora che possa essere convertito inequivocabilmente in un valore datetime oppure l'intero che corrisponde al 01/01/2006, cioe' la differenza in giorni tra il 01/01/1900 e 01/01/2006, che corrisponde a 38716...
chiaramente non e' molto comodo operare in questo modo, e, nel caso di un valore costante, come nel tuo caso, e' preferibile utilizzare un parametro facilmente interpretabile anche dall'occhio umano e chiaramente inequivocabilmente convertibile da SQL Server... tipicamente un valore testuale (quindi racchiuso tra apici) in un formato inequivocabile (il formato ISO).. di fatto, '2006-01-01'
il motivo della inequivocabilita' dipende dal fatto che SQL Server concede la possibilita' di interpretare la conversione da valore testuale a proprietario datetime in base alle impostazioni di lingua della login corrente...
per cui, il significato di '01/10/2006' e' diverso per un italiano ed un americano, che al posto del 1° ottobre 2006 interpretera' il valore com 10 gennaio 2006..
il formato ISO (YYYYMMDD con o senza separatore '-') e' invece inequivocabile, e questo e' il formato che andrebbe sempre utilizzato in tutte le operazioni con le date verso SQL Server, siano esse selezioni che modifiche..
saluti