3

winフォームで保存されたデータの場合、入力日付のフォーマットは(dd/mm/yyyy)です。データベースは (yyyy-mm-dd) 形式で表示されます。日付形式を変更するにはどうすればよいですか?

private void btnAllocate_Click(object sender, EventArgs e)
        {

            for (int i = 0; i < dgvDetails.Rows.Count; i++)
            {
                SqlConnection con = new SqlConnection("server=HP-HP; database=Restaurent; user id=sa; password=sql2008");
                SqlCommand cmd = new SqlCommand("INSERT INTO WtrTblAllot (WtrNm,Type,No,currDate) values (@WtrNm,@Type,@No,@currDate)", con);
                cmd.Parameters.AddWithValue("@WtrNm", dgvDetails.Rows[i].Cells[0].Value);
                cmd.Parameters.AddWithValue("@Type", dgvDetails.Rows[i].Cells[1].Value);
                cmd.Parameters.AddWithValue("@No", dgvDetails.Rows[i].Cells[2].Value);
                cmd.Parameters.AddWithValue("@currDate", dtTmPkr.Value);
                con.Open();
                cmd.ExecuteNonQuery();
                cmd = null;
              }
        MessageBox.Show("Added successfully!");
}

日時パイカー (dtTmPkr) 形式 (dd/mm/yyyy)

4

3 に答える 3

5

SQL Server はDateTime任意の文字列形式で a を保存しません。これは 8 バイトの数値として保存されます。

さまざまな設定 (言語、日付形式)DateTimeは、SQL Server Management Studio での の表示方法、または文字列を に変換する際の解析方法にのみ影響しますDateTime

SQL Server では多くの形式がサポートされています。CAST および CONVERT については、MSDN Books Online を参照してください。

つまり、SQL Server の日付形式を変更することではなく、SQL Serverから取得したデータをどのようにフォーマットして表示するかということです。Datetime適切な T-SQLCONVERTパラメーターを使用するかDateTime、C# フロントエンド コードで をフォーマットします。

更新:DateTimePicker質問に示されているクエリを使用して SQL Server に値を挿入する場合は、DateTime問題ありません。パラメーターを挿入しているため、日付の文字列の書式設定に問題はありません。

DATETIMESQL Server の a を特定の形式に変換する必要がある場合- を使用します

SELECT CONVERT(VARCHAR(50), YourDateColumn, 103)

dd/mm/yyyyこれにより、 (英国/フランス語) 形式で日付が表示されます。別の形式が必要な場合は、別のスタイル (103 以外の数字) を使用してください。これらのスタイルは、こちらで詳しく説明されています

列を C#に読み戻してDateTimeフォーマットする必要がある場合は、次を使用します。

string formatted = YourDateTime.ToString("dd/MM/yyyy");

必要な値を取得します。注意: monthをフォーマットするには、MM(capitalized!)を使用してください。mmDateTime

于 2013-09-07T07:20:51.337 に答える
0

パラメータを追加する前に、C# で Date to datetime オブジェクトを解析してみてください。

DateTime Dt = DateTime.ParseExact(dtTmPkr.Value, "dd/MM/yyyy", CultureInfo.InvariantCulture);
cmd.Parameters.AddWithValue("@currDate", Dt);
于 2013-09-07T06:58:58.903 に答える