0

「2013 年 6 月 30 日」という形式で日付を取得するにはどうすればよいですか

実行時に、ユーザーがテキストボックスに上記の形式で入力すると、指定された日付に一致するデータの行がフェッチされ、それがフィルター処理され、datagridview に表示されます

そのために、日付形式とテキストボックスに入力されたテキストを比較したい

string todaydate = Convert.ToString(DateTime.Today);

DateTime DTM = Convert.ToDateTime(todaydate);

string datetoday = DTM.ToString("dd-MMM-yyyy");

if (TypeHereTextBox.Text == datetoday)

{
    OLCMND2 = new OracleCommand("Select * from TABLENAME where DATE = '" +              typeHereTextBox.Text + "'", CON);

    OADAP1 = new OracleDataAdapter(OLCMND2);
    OADAP1.Fill(DTBLE2);

    DatagridView.DataSource = DTBLE2;
}

どうすれば解決できますか

4

5 に答える 5

0

DateTime.ParseExact日付を文字列として比較するのではなく、日時形式の文字列を指定して文字列を DateTime に変換します。次に、文字列比較の代わりに 2 つの datetime オブジェクトを比較します。

また、パラメータを使用して Date 列の値を以下のように設定します

OLCMND2 = new OracleCommand("Select * from TABLENAME where DATE = :dateVal", CON);
OLCMND2.Parameters.Add("dateVal", OracleDbType.Date
     , myDatetime, System.Data.ParameterDirection.Input);
于 2013-08-14T10:19:12.397 に答える
0

まず、文字列の比較を行います。つまり、参照を比較します。使ってください

if (TypeHereTextBox.Text.Equals(datetoday))

代わりは。

次に、文字列ではなく dateTime を比較してみませんか? とにかくデータが有効な日付ではないため、使用できないParseExactTryParseExact、有効な日付を使用できません。

DateTime d;
DateTime.TryParseExact(date, "dd-MMM-yyyy", System.Globalization.CultureInfo.InvariantCulture,
                                System.Globalization.DateTimeStyles.NoCurrentDateDefault, out d);

if (d== DTM)
于 2013-08-14T10:10:05.257 に答える
0

これはその形式から解析されます:

var dateToParse = "30-Jun-2013"; //TypeHereTextBox.Text
var parsedDate = DateTime.ParseExact(dateToParse, "dd-MMM-yyyy", CultureInfo.InvariantCulture);

if (parsedDate.Date == datetoday.Date)
{
    // Do stuff

注 - 6 月は 30 日しかありません ;)

于 2013-08-14T10:11:14.127 に答える
0

最良のアプローチは、今日の日付で月と年の日付を個別にチェックすることです。一致する場合は、日付の月と年を必要な形式で連結し、クエリに渡します。

于 2013-08-14T10:11:27.537 に答える