1

この日時形式を変換/キャストするにはどうすればよいですか: 06/17/2012 12:00:00 AM

この日付形式へ: 2012/06/17

SQL更新ステートメントで?

フィールドに変更する必要があります。開始日、および終了日。両方の DateTime 型。

これは、これまでの私の更新ステートメントです。

Update discount set DiscountPromotionalID = @DiscountPromotionalID,
   isActive =@isActive, Title = @Title, BeginDate = @BeginDate, EndDate = @EndDate, 
    DiscountPercentage = @DiscountPercentage

    where DiscountPromotionalID = @DiscountPromotionalID;" 
4

2 に答える 2

1

NVARCHARとして保存している場合(そうすべきではありません)、挿入/更新ステートメントを実行するときに、以下を使用して変換できます。この列を適切なDateTimeフィールドに変換することをお勧めします。そうすれば、コメント投稿者が提案したように、プレゼンテーション層内で好きなようにフォーマットできます。

このリソースをチェックして、SQLデータフォーマットのすべてのニーズを確認してください(例としてsql!)

http://www.sql-server-helper.com/tips/date-formats.aspx

私はあなたがこのようなものを探していると信じています(上記のリソースから):

CONVERT(VARCHAR(10), GETDATE(), 111) AS [YYYY/MM/DD]
于 2012-08-20T20:54:35.143 に答える
0

C#DateTime値と同様に、SQL ServerDateTime値には形式がありません。これは、2つの32ビット整数で構成される64ビットフィールドです。最初は、エポック(1900年1月1日00:00:00.000)からの日数をカウントします。秒は、1日の開始からの時間を1/300秒でカウントします。

CONVERT()を使用したSQLまたはクライアントコードのいずれかで、表示またはchar/varcharに変換するときにフォーマットを適用します。

あなたのupdateステートメントはフォーマットを気にしません:それは価値を気にします。C#DateTime値をSqlParameterストアドプロシージャまたはパラメータ化されたクエリに渡すと、正しいことが起こります。CLRは、一方を他方に魔法のように変換します。

文字列をC#からDateTimeパラメータとして渡す場合は、SQLServerがDateTime文字列として認識する形式である必要があります。その場合、C#文字列からSQLServerのDateTime値への変換も同様に魔法のように行われます。

あなたのステートメントが与えられたらupdate、次のようなコードを実行する必要があります。

public int UpdateDiscount( int discountPromotionalID , bool isActive , string title , DateTime beginDate , DateTime endDate , int discountPercentage )
{
  const string updateQuery = @"
Update discount
set DiscountPromotionalID   = @DiscountPromotionalID ,
    isActive                = @isActive              ,
    Title                   = @Title                 ,
    BeginDate               = @BeginDate             ,
    EndDate                 = @EndDate               ,
    DiscountPercentage      = @DiscountPercentage    
where DiscountPromotionalID = @DiscountPromotionalID
" ;

  int rowsAffected ;

  using ( SqlConnection connection = new SqlConnection( SomeConnectString ) )
  using ( SqlCommand    cmd        = connection.CreateCommand() )
  {

    cmd.CommandText = updateQuery ;
    cmd.CommandType = CommandType.Text ;

    cmd.Parameters.AddWithValue( "@DiscountPromotionalID" , discountPromotionalID ) ;
    cmd.Parameters.AddWithValue( "@isActive"              , isActive ? 1 : 0 ) ; // C# bools are true/false; SQL bools are 1/0
    cmd.Parameters.AddWithValue( "@Title"                 , title ) ;
    cmd.Parameters.AddWithValue( "@BeginDate"             , beginDate ) ;
    cmd.Parameters.AddWithValue( "@EndDate"               , endDate   ) ;
    cmd.Parameters.AddWithValue( "@DiscountPercentage"    , discountPercentage ) ;

    connection.Open() ;
    rowsAffected = cmd.ExecuteNonQuery() ;
    connection.Close() ;

  }

  return rowsAffected ;

}
于 2012-08-20T23:39:17.757 に答える