-2

cmd.Parameters.Add("@StartDate", SqlDbType.DateTime).Value = DateTime.Parse(txtStartDate.Text);

txtStartDate.Text の値は 31-07-2012 のようになります

2012-07-31 として取得する必要があります。

ストアドプロシージャでの処理用。

私のコードは次のようなものです:

            cmd = new SqlCommand("DownloadtoXLSheet", conn);



            cmd.Parameters.Add("@StartDate", SqlDbType.DateTime).Value = DateTime.Parse(txtStartDate.Text);
            cmd.Parameters.Add("@EndDate", SqlDbType.DateTime).Value = DateTime.Parse(txtEndDate.Text);
            cmd.Parameters.Add("@FirstName", SqlDbType.VarChar).Value = DropDownList1.Text.ToString();
            cmd.CommandType = CommandType.StoredProcedure;
            cmd.ExecuteNonQuery();

            SqlDataAdapter da = new SqlDataAdapter(cmd);
            da.Fill(dt1);

手伝ってください

4

4 に答える 4

3

まず、ストアド プロシージャ/データベースで処理するために特定の形式の日付は必要ありません。DateTime が (DateTime 型の) パラメーターとして追加されると、SQL プロバイダーは、SQL サーバーが日付を処理できることを確認します。

一方、DateTime.Parse が機能するには、特定の形式の日付が必要になる場合があります。

試す:

DateTime.ParseExact(input, "dd-MM-yyyy", CultureInfo.InvariantCulture);

しかし、DateTime.TryParseExact例外を避けるために、代わりに使用する必要がありますか?

于 2012-07-31T12:31:22.863 に答える
2

DateTime.ParseExactの代わりにメソッドを使用しDateTime.Parseます。

DateTime result=DateTime.ParseExact("31-07-2012", "dd-MM-yyyy",CultureInfo.InvariantCulture);
于 2012-07-31T12:26:52.163 に答える
0

試してみてください

DateTime dt = ...;

dt.ToString("yyyy-MM-dd");
于 2012-07-31T12:29:03.957 に答える
0

.ToString() メソッドでは、フォーマット文字列http://msdn.microsoft.com/en-us/library/zdtaw1bw.aspxを指定できます

DateTime.Parse(txtStartDate.Text).ToString("yyyy-MM-dd")
于 2012-07-31T12:29:16.197 に答える