2012-12-18 19 views
7

Mam pytanie proszę: Jak mogę utworzyć tabelę na serwerze SQL z domyślną datetime jako pustą, a nie 1900-01-01 00:00:00.000, którą otrzymuję.Domyślnie wstaw wartość pustą w sql datetime domyślnie

To znaczy, jeśli nie ma wartości wstawiony, wartość domyślna powinna być null, pusty ...

Dzięki

+5

'jeśli nie ma wartości wstawionej, domyślna wartość powinna być pusta, pusta' To dlaczego nie ustawić go jako Nullable i wstawić' NULL'? –

+0

MAM DOZWOLONE NULL VARIABLES THOUGH .. –

+1

Czy możesz pokazać przykładowe wyrażenie 'INSERT'? – zimdanen

Odpowiedz

17

jeśli nie ma wartości wstawiony, wartość domyślna sho uld być null, pusty

W definicji tabeli, aby ten kolumna datetime pozwala null, być nie definiując NOT NULL:

... 
DateTimeColumn DateTime, 
... 

I pozwoliły NULL ZMIENNE chociaż.

Następnie wystarczy włożyć NULL w tej kolumnie:

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

Lub można skorzystać z DEFAULT constaints:

... 
DateTimeColumn DateTime DEFAULT NULL, 
... 

Następnie można go zignorować całkowicie w rachunku INSERT i zostanie wstawiony z wartością NULL:

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

Problem polega na tym, że jeśli dane wejściowe są puste, to nie powinno się wstawiać "1900-0-0-0 itd.", Ale NULL, i nie powinienem wstawiać wszystkich tych warunków, a następnie –

+0

@OziOz Zobacz moją edycję. Ustaw "DEFAULT NULL" i igonuj go na liście insertów, w przeciwnym razie, jeśli nie używałeś 'DEFAULT NULL', ustaw to na zero i wstaw wartość zerową w tej kolumnie –

+0

Przykro mi, Mahmud, nie rozumiem cię tak dobrze :( Gdzie mogę to umieścić? Czy powinienem utworzyć dla tego nowe zapytanie? DateTimeColumn DateTime DEFAULT NULL, –

0
  1. zdefiniować go jak your_field DATETIME NULL DEFAULT NULL
  2. nie wstawić pusty ciąg, wkładka NULL INSERT INTO x(your_field)VALUES(NULL)
0

Ozi, podczas tworzenia nowego obiektu datetime, jak w datetime foo = new datetime(); foo jest wykonana z DateTime.MinValue czasu() w budowaniu zapytania parametrycznego, można sprawdzić, czy wprowadzone wartości są równe DateTime.MinValue()

-Tylko myśli bocznym. wydaje się, że masz działające rzeczy.

0

Tego samego dnia miałem ten sam problem. Wydaje się, że dla pola DATA lub DATETIME nie można wstawić pustej wartości. Obejrzałem to, najpierw sprawdzając pustą wartość (mydate = "") i jeśli było to puste ustawienie mydate = "NULL" przed wstawieniem.

Pola DATA i DATETIME nie zachowują się w taki sam sposób jak pola VARCHAR.

+1

_ „Data i DateTime pola nie zachowują się w taki sam sposób jak VARCHAR” _ - to dlatego, że pusta, nie -null string ('" "') jest prawidłowym łańcuchem znaków, ale nie można skonstruować prawidłowej, pustej, niepustej daty. – CodeCaster