2012-12-18 9 views
7

Ho una domanda per favore: Come posso creare una tabella in SQL server con il datetime predefinito come vuoto, non 1900-01-01 00:00:00.000 che ottengo.Inserisci valore null/vuoto nella colonna sql datetime per impostazione predefinita

Cioè, se non v'è alcun valore inserito, il valore di default dovrebbe essere nullo, vuoto ...

Grazie

+5

'se non è stato inserito alcun valore, il valore predefinito dovrebbe essere nullo, vuoto' Allora perché non renderlo Nullable e inserire' NULL'? –

+0

HO AMMESSO LE VARIABILI NULL TUTTE ... –

+1

Puoi mostrare un esempio di istruzione 'INSERT'? – zimdanen

risposta

17

se non esiste un valore inserito, il valore predefinito sho ULD essere nullo, vuoto

Nella definizione della tabella, effettuare questa colonna datetime permette nullo, da non definire NOT NULL:

... 
DateTimeColumn DateTime, 
... 

Ho permesso VARIABILI NULL SE.

Poi, basta inserire NULL in questa colonna:

INSERT INTO Table(name, datetimeColumn, ...) 
VALUES('foo bar', NULL, ..); 

alternativa, è possibile usufruire delle DEFAULT constaints:

... 
DateTimeColumn DateTime DEFAULT NULL, 
... 

Poi si può ignorare completamente nella dichiarazione INSERT e verrà inserito con il valore NULL:

INSERT INTO Table(name, ...) 
VALUES('foo bar', ..); 
+0

Il problema è che se l'input è vuoto, allora non dovrebbe mettere '1900-0-0-0 ecc' ma NULL, e non dovrei dover mettere tutte quelle condizioni allora –

+0

@OziOz Vedi la mia modifica. Rendilo 'DEFAULT NULL' e igonre nella lista di inserimento, altrimenti se non hai usato' DEFAULT NULL', rendilo nullable e inserisci null in quella colonna –

+0

Mi dispiace Mahmud non ti capisco così bene :( Dove lo metto? dovrei creare una nuova query per questo? DateTimeColumn DateTime DEFAULT NULL, –

0
  1. definirlo come your_field DATETIME NULL DEFAULT NULL
  2. dont inserire una stringa vuota, inserto un NULL INSERT INTO x(your_field)VALUES(NULL)
0

Ozi, quando si crea un nuovo oggetto datetime come in datetime foo = new datetime(); foo è costruito con il tempo DateTime.MinValue() nella costruzione di una query con parametri, si potrebbe verificare se i valori immessi sono uguali a DateTime.MinValue()

-Basta un pensiero laterale. sembra che funzioni.

0

stavo avendo lo stesso problema questa mattina. Sembra che per un campo DATE o DATETIME, non sia possibile inserire un valore vuoto. Ho risolto il problema verificando innanzitutto un valore vuoto (mydate = "") e se era vuoto impostando mydate = "NULL" prima di inserire.

I campi DATE e DATETIME non si comportano nello stesso modo dei campi VARCHAR.

+1

_ "I campi DATE e DATETIME non si comportano allo stesso modo di VARCHAR" _ - questo perché un vuoto, non -null string ('" "') è una stringa valida, ma non è possibile costruire una data valida, vuota, non nulla. – CodeCaster

Problemi correlati