テストクラスと、日付のみを格納するExecutionDate
プロパティがありますが、データベースに時間部分も格納する[DataType(DataType.Date)]
を使用する場合、日付部分のみが必要です。
_public class Test
{
[Key]
public int Id { get; set; }
[DataType(DataType.Date)]
public DateTime ExecutionDate { get; set; }
}
_
Entity Frameworkを使用してDBに時間部分の日付のみを保存する方法はありますか?私を助けてください....
時刻部分00:00を保存する[DataType(DataType.Date)]
を使用するときにスナップショットを追加しました
データベースの列タイプを指定しようとしていると思います。 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に変換されますが、ここで変更しました。また、デフォルトではsqlサーバーのdatatimeにマップされるDatetime(これはあなたが推測したものです)はdate
値の時間部分ではなく日付部分のみを格納するDateTime
に変更されます。
上記でDavidが言ったように、そのデータをアプリケーションに取り込むと、日付にタイムスタンプが追加されたDateTimeになります。日付を文字列として保存し、Convertを使用して任意の操作のためにDateTimeに変更した場合も、これは同じ結果になります。
string date = "2015-11-17";
var dateTime = Convert.ToDateTime(date);
タイムスタンプを回避するためにアプリケーションで文字列を操作する場合を除き、DateTimeのみを使用できます。ただし、表示のために、いつでも日付をフォーマットし、タイムスタンプを削除できます。
var dateTime = DateTime.Now;
var formatDate = dateTime.ToString("yyyy-MM-dd");
データベースでDateTimeを使用する場合、データベースでDateTimeをnvarchar(10)に変更します。データベースによって00.00.00が自動的に割り当てられます。
string date = DateTime.Today.ToShortDateString();