9

У меня есть класс тестирования и свойство ExecutionDate, которое хранит только дату, но когда мы используем [DataType(DataType.Date)], который также хранит временную часть в базе данных, но я хочу только часть даты.магазин только дата в базе данных не время часть C#

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

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

Можно ли хранить только дату во временной части в db, используя Entity Framework? Пожалуйста, помогите мне ....

я добавил снимок при использовании [DataType(DataType.Date)], который хранит время часть 00:00 Я хочу удалить, что

enter image description here

+0

Ну, что такое ** тип данных ** столбца в таблице базы данных? Если столбец в вашей базе данных «DATETIME» - тогда, конечно, вы сохраните дату и время. Столбец ** ** должен иметь тип данных DATE, а не только ваш атрибут класса C#! –

+0

сделайте свой столбец базы данных 'DATE'! –

+0

Это проблема с просмотром, а затем проблема с хранением. Дата-время - это дата-время, даже если временная часть не установлена. Ваш инструмент, отображающий содержимое таблицы, просто показывает формат по умолчанию для datetime. Если вы не хотите видеть изменение времени, установите инструмент, используемый для просмотра содержимого db. – Ralf

ответ

14

Я думаю, вы пытаетесь указать тип столбца базы данных. Вы можете использовать аннотации данных, как описано в статье this.

Вот пример:

[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; } 
} 

По умолчанию, строка переводится в NVARCHAR, мы изменили это здесь. Также Datetime (это то, что вы задали, я полагаю), который по умолчанию сопоставляется с дататимом в sql-сервере, изменяется на date, который хранит только часть даты, а не временную часть значения DateTime.

-1

Ваш столбец должен быть в настоящее время datetime как время часть в настоящее время отображается на скриншоте. На сервере SQL время показывается, если это только столбец типа date. В C# нет date, только DateTime. Но это нормально, когда вы извлекаете даты из db, время будет составлять 00:00:00. Просто убедитесь, что ваш тип столбца на db является «датой», а не «datetime».

alter table tableName alter column ExecutionDate date 

Или щелкните правой кнопкой мыши таблицу, конструктор, измените тип столбца вручную.

-2

Изменение типа данных в базе данных от Datetime к Date типа

Является ли это действительно проблема для вас в любом случае? В какой-то момент вам может понадобиться время,

-1

Как сказал Дэвид выше, как только вы принесете эти данные в приложение, это будет DateTime с отметкой времени, добавленной к дате. Это будет тот же результат тоже, если вы сохранили дату в виде строки и используется Преобразовать, чтобы изменить к DateTime для любых манипуляций:

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

Если вы не хотите, чтобы манипулировать строками в вашем приложении, чтобы избежать штампа времени, вы можете работает только с DateTime. Для целей отображения, хотя, вы всегда можете отформатировать дату и удалить метку времени:

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

Изменения DateTime в NVARCHAR (10) в базе данных если и использовать DateTime в базе данных 00.00.00 будет автоматически присвоена базой

string date = DateTime.Today.ToShortDateString();