79 messaggi dal 05 aprile 2005
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
26 messaggi dal 20 luglio 2005
Nel default value prova a mettere il valore delle data di default tra apici singoli:

'2006-01-01'
1.976 messaggi dal 27 luglio 2005
Contributi
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

Andrea Montanari
http://www.hotelsole.com - http://www.hotelsole.com/asql/index.php

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.