-4

C#とSQLServer2005を使用しています。テーブルに日付と時刻を保存したいと思います。SQL Serverでは、smalldatetimeデータ型を使用します。私はこのコードを使用しています。

TimeZoneInfo ob1 = TimeZoneInfo.FindSystemTimeZoneById("India Standard Time");
DateTime dt = TimeZoneInfo.ConvertTimeFromUtc(DateTime.UtcNow, ob1);

このクエリを介してデータを挿入します

insert into tablename (name,sub_date) values (@name,'{0}')",dt.ToShortTimeString()

しかし、問題は私のテーブルに日付と時刻がこのように保存されていること1/1/1900 5:15:00 PMです。実際の日付は保存されません。実際の日付と時刻をデータベースに保存する方法。

注:テーブルのすべてのレコードを日付と時刻に従って表示したいと思います。ですから、日付と時刻の両方が私にとって重要です。

4

2 に答える 2

1

次のようなものを試してください。

// Define insert statement with parameters
string insertStmt = "INSERT INTO dbo.tablename (name, sub_date) VALUES (@name, @mydate)";

// setup connection and command objects
using(SqlConnection conn = new SqlConnection("your-connection-string-here"))
using(SqlCommand cmd = new SqlCommand(insertStmt, conn))
{
    // add parameters to command
    cmd.Parameters.Add("@name", SqlDbType.VarChar, 50).Value = ".....";
    cmd.Parameters.Add("@mydate", SqlDbType.DateTime).Value = dt;

    // open connection, execute query, close connection
    conn.Open();
    cmd.ExecuteNonQuery();
    conn.Close();
}

それでうまくいくはずです!DateTimeから文字列への面倒な変換はありません。DateTime値は「現状のまま」保存され、SQLServerに同じ形式で保存されます。パラメータを使用することで、SQLインジェクション攻撃の可能性を排除しました。また、このクエリを異なる値で複数回呼び出す必要がある場合は、このクエリを再利用できるため、パフォーマンスも向上します。

于 2012-08-18T12:13:34.547 に答える
1

パラメータ化されたクエリを使用し、DateTime をパラメータとして渡します。文字列を使用することは、常に悪い考えです (特に、文化に影響されない文字列)。

于 2012-08-18T12:03:03.540 に答える