2011-08-04 27 views
2

C#datetimeをMySql Datetime形式に変換する方法。私は7/27/2011この形式のようなテキストボックスから値を得ています。しかし、私は2011-7-27この形式で変換したい。だからここで私は頬張っている。私を助けてください。私の目的は、2つの日付間のレコードをフィルタリングし、asp.netのlistviewコントロールに表示することです。ここ は私のコードです:C#からMySqlへの日付変換

DateTime dt1 = Convert.ToDateTime(txtToDate.Text); 
    DateTime dt2 = Convert.ToDateTime(txtFromDate.Text); 
      lvAlert.DataSource = facade.GetAlertsByDate(dt1, dt2); 
      lvAlert.DataBind(); 
+0

DB内のレコードをフィルタリングしていますか?上記のコードは、あなたがこれをやっている方法を示していません。 – V4Vendetta

+0

接続やコマンドオブジェクトなどを設定できるSQLServer用に用意されている、使いやすい.netクラスのセットがあると仮定します。データベースへの呼び出しでパラメータを使用する必要があります。また、データベースで必要なものにDateTimeオブジェクトを変換する必要があります。 MySqlの日付を書式設定する方法について心配する必要があるのは間違っているようですが、MySqlのサポートがどれほど優れているかについては間違いかもしれません。 – Chris

+0

私はMySQL 5.1データベースで問題に直面しています。今私は自分の問題を解決していませんでした。いくつかのトリックを教えてください。 –

答えて

1

を得るために210 Iは、.NETとMySQLを使用していないが、Oracleは.NETと同様の日付の変換の問題があります。これをもってsnaeを維持する唯一の方法は、WHERE句の比較と同様に、WHERE句の入力とWHERE句の比較の両方のために、日付値のパラメータを使用することでした。 MySQLの日付パラメータ型を使用して作成したパラメータに、.NETのdatetime値を与えるだけで、変換する必要はありません。

EDITEDサンプルコードを

を追加するには、このコードサンプルは、代わりの値をテキストに変換をコーディングし、SQLコマンドテキストに直接それらのテキスト値を埋め込むの日時値のパラメータを使用することの基本的な技術を示しています。

public DataTable GetAlertsByDate(DateTime start, DateTime end) 
{ 
    SqlConnection conn = new SqlConnection(connectionString); 
    SqlCommand cmd = new SqlCommand(
     "SELECT * FROM Alerts WHERE EventTime BETWEEN @start AND @end", conn); 
    DataTable table = new DataTable(); 
    try 
    { 
     SqlParameter param; 
     param = new SqlParameter("@start", SqlDbType.DateTime); 
     param.Value = start; 
     cmd.Parameters.Add(param); 
     param = new SqlParameter("@end", SqlDbType.DateTime); 
     param.Value = end; 
     cmd.Parameters.Add(param); 
     SqlDataAdapter da = new SqlDataAdapter(cmd); 
     da.Fill(table); 
    } 
    finally 
    { 
     cmd.Dispose(); 
     conn.Close(); 
     conn.Dispose(); 
    } 
    return table; 
} 

これはSQL Serverコードですが、この技法はほとんどのデータベースで同じにする必要があります。たとえば、Oracleの場合、Oracleデータアクセスオブジェクトを使用し、パラメータ名に「@」の代わりに「:」を使用するだけです。 MySQLのテクニックも非常に似ているはずです。

cmd.Parameters.AddWithValue("@start", start); 

あなたは値がnullでないことを知っているとき、これが動作し、正しいパラメータタイプはのC#型から派生することができます。

多くのデータベースでは、ショートカットは、次のようなパラメータを、作成するために存在してもよいです値。 "AddWithValue"はSQL Server固有のものです。 「追加」も機能しますが、SQL Serverでは廃止されました。

これが役に立ちます。

+0

答えはフルコードサンプルを表示するように編集されました。 –

+0

はい、うまくいきます。コードをくれてありがとう。 –

0

あなたは、データの時間にDateTime.ParseExact()またはDateTime.ToString(format)をフォーマットを割り当てることができ、:2011-7-27ため

形式は、私が使用yyyy-m-dd

+0

私は上記のすべてのことを大事にしましたが、私は解決策を得ていません。私を助けてください。 –

0

です:

string fieldate = dt1.ToString("yyyy-MM-dd"); 
+0

日時d1、d2がある場合、私はあなたの問題をよく理解していません。あなたはd1 juanma

0

データベースでこれをやっているとすれば、を使うべきだと思います必要な形式でdate_format(dateval,'%Y-%c-%d')よう

サムシング(未テスト)

関連する問題