9

私はテストクラスを持ち、プロパティは日付のみを格納しますが、[DataType(DataType.Date)]を使用するとデータベースに時間部分も格納されますが、日付部分のみが必要です。データベースに時刻のみではない日付を格納するC#

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

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

Entity Frameworkを使用して日付部分のみをdbに保存する方法はありますか?私は

enter image description here

+0

データベーステーブルの列の**データ型**は何ですか?データベースの列が 'DATETIME'の場合、もちろん日付と時刻が格納されます。 **データベース列**は、C#クラスのあなたの属性だけでなく、データ型 'DATE'でなければなりません! –

+0

データベースの列を 'DATE'にしてください! –

+0

それ以上の表示の問題は、格納の問題です。時間部分が無しに設定されていても、datetimeはdatetimeです。テーブルのコンテンツを表示しているツールは、datetimeのデフォルトの形式を示しています。 timepartを見たくない場合は、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 Serverのdatatimeにマップされ、dateに変更され、DateTimeの時間部分ではなく日付部分だけが格納されます。

-1

はあなたの列は、時間一環として、現在datetimeをしなければならないことを削除したい時刻部分午後12時を格納し、使用[DataType(DataType.Date)]がされているスナップショットが追加されている

....私を助けてくださいあなたのスクリーンショットに表示されます。 SQLサーバーでは、それがちょうどdateタイプの列であれば、時間は表示されません。 C#にはdateタイプはなく、ちょうどDateTimeです。しかし、それは大丈夫です。データベースから日付を取得すると、時間部分はすべて00:00:00になります。 dbのカラムタイプが "datetime"ではなく "date"であることを確認してください。

alter table tableName alter column ExecutionDate date 

右クリックしてテーブル、デザイナー、列の種類を手動で変更します。 Dateタイプ

からDatetimeからデータベースに

-2

変更データ型は、それはとにかくあなたのために本当に問題ですか?

-1

上記でDavidが述べたように、アプリケーションにそのデータを持ち込むと、日付にタイムスタンプが追加されたDateTimeになります。あなたは、文字列として日付を保存し、任意の操作のためのDateTimeに変更するための変換を使用する場合、これはあまりにも同じ結果を次のようになります。

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

あなたはタイムスタンプを避けるために、アプリケーションで文字列を操作する場合を除き、あなたができますDateTimeでのみ動作します。表示目的のために、しかし、あなたは常に日付をフォーマットし、タイムスタンプを削除することができます。nvarchar型へ

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

変更日時(10)データベース にuはデータベース00.00.00でのDateTimeを使用している場合、自動的にデータベース

によって割り当てられます
string date = DateTime.Today.ToShortDateString(); 
関連する問題