SQL - Insérer NULL dans DateTime
J'ai une table où je ajouter Datetime
dans certaines colonnes. J'ai utiliser une procédure stockée pour insérer des valeurs dans la table. Dans la procédure stockée j'ai variables qui accepte la valeur null pour l'insertion dans la table. Mon problème est que lorsque j'essaie d'insérer une valeur null dans ma colonne de la table-je obtenir 1900-01-01 dans la colonne. Que dois-je faire à la place de cette valeur par défaut insérez uniquement la valeur NULL dans la colulmn??
C'est ma SP:
CREATE PROCEDURE dbo.Insert
@InserID int,
@InsertDate Datetime = null,
AS
Insert into Tables(InsertID, InsertDate)
Values(@InsertID, @InsertDate)
Je faire pour attribuer une valeur nulle:
System.Data.SqlTypes.SqlDateTime getDate;
//set DateTime null
getDate = SqlDateTime.Null;
if (InsertDate.Text == "")
{
cmd1.Parameters["@InsertDate"].Value = getDate;
}
else
{
cmd1.Parameters["@InsertDate"].Value = InsertDate.Text;
}
La valeur qui s'ajoute à ma table, la colonne n'est pas NULL, son 1900-01-01.
Que dois-je faire?
source d'informationauteur Man1
Vous devez vous connecter pour publier un commentaire.
Je suis en utilisant ce modèle et je n'ai pas de problèmes avec les valeurs null ou d'incompatibilité de format de texte.
Vous pouvez omettre les paramètres facultatifs entièrement, au lieu de les mettre à
SqlDateTime.Null
.Cela dit, le code doit encore travailler. Comment avez-vous lu la base de données? Certains téléspectateurs affichage
1900-01-01
pournull
. Que voyez-vous lorsque vous exécutezselect * from Tables
à partir de SQL Server Management Studio?Je soupçonne qu'il y a une conversion implicite de DBNull à 0 pour votre date DateTime est pas prendre la valeur null par défaut. Cela permettrait de reproduire le comportement que vous voyez.
lol, juste après avoir vu le Addomar réponse, si la colonne dans SSMS n'est pas réellement nul mais en fait zéro et vous ne pouvez pas changer le schéma de base de données (parfois ce n'est pas possible), puis l'approche ci-dessous...
Vous pouvez essayer quelque chose comme datacolumn datagridview remplacer la valeur spécifique de remplacer la valeur zéro avec diverses texte ou une chaîne vide?
Mais, idéalement, changement de la colonne à nullable sans défaut et omettez le paramètre lorsqu'il doit être null.
J'ai essayé ceci dans SSMS
qui renvoie
1900-01-01 00:00:00.000
donc une autre possibilité est que votre entrée est un espace. Essayez d'utiliser
au lieu de