web-dev-qa-db-fra.com

stocker uniquement la date dans la base de données et non la partie temporelle C #

J'ai une classe de test et une propriété ExecutionDate qui stocke uniquement la date mais lorsque nous utilisons [DataType(DataType.Date)] qui stocke également la partie heure dans la base de données, mais je ne souhaite que la partie date.

public class Test
{
     [Key]
     public int Id { get; set; }

     [DataType(DataType.Date)]
     public DateTime ExecutionDate { get; set; }      
}

Existe-t-il un moyen de stocker uniquement la date à l'heure dans la base de données en utilisant Entity Framework? Aidez-moi, s'il vous plaît....

J'ai ajouté un instantané lors de l'utilisation de [DataType(DataType.Date)] qui stocke la partie de temps 00:00 Je veux supprimer cela

enter image description here

14
KARAN

Je pense que vous essayez de spécifier le type de colonne de base de données. Vous pouvez utiliser des annotations de données comme décrit dans l'article this .

Voici un exemple :

[Table("People")]
public class Person
{
    public int Id { get; set; }

    [Column(TypeName = "varchar")]
    public string Name { get; set; }

    [Column(TypeName="date")]
    public DateTime DOB { get; set; }
}

Par défaut, la chaîne est traduite en nvarchar, nous avons changé cela ici. Aussi Datetime (c'est ce que vous avez demandé, je suppose) qui, par défaut, correspond à datatime dans le serveur SQL, est changé en date qui stocke uniquement la partie date et non la partie heure d'une valeur DateTime .

31
Ravi M Patel

Comme David l'a dit ci-dessus, une fois que vous introduisez ces données dans l'application, ce sera un DateTime avec l'horodatage ajouté à la date. Ce serait le même résultat aussi si vous stockiez la date sous forme de chaîne et utilisiez Convert pour changer en DateTime pour toute manipulation:

string date = "2015-11-17";
var dateTime = Convert.ToDateTime(date);

À moins que vous ne vouliez manipuler des chaînes dans votre application pour éviter l'horodatage, vous ne pouvez travailler qu'avec DateTime. Cependant, à des fins d'affichage, vous pouvez toujours formater la date et supprimer l'horodatage:

var dateTime = DateTime.Now;
var formatDate = dateTime.ToString("yyyy-MM-dd");
1
Ryan Intravia

Remplacez DateTime par nvarchar (10) dans la base de données si vous utilisez DateTime dans la base de données 00.00.00 sera automatiquement attribué par la base de données

string date = DateTime.Today.ToShortDateString();
0