0

プロジェクトに「ProcessData」という名前のテーブルと「Start_At」(タイプ:DateTime)および「End_At」(タイプ:DateTime)という名前の列を持つデータベースがあります。
このテーブルに新しいレコードを入力しようとすると、次の形式でデータが入力されます:'YYYY / MM / DD HH:mm'、実際にはその形式にしたい場合:'YYYY / MM / DD HH :mm:ss'(秒は表示されません)。
誰かがその理由を知っていますか、そしてこれを修正するために私は何をすべきですか?

これが私が使用しているコードです:

con = new SqlConnection("....");
String startAt = "20100413 11:05:28";
String endAt = "20100414 11:05:28";
...
con.Open();//open the connection, in order to get access to the database
SqlCommand command = new SqlCommand("insert into ProcessData (Start_At, End_At) values('" +  startAt + "','" + endAt + "')", con);
command.ExecuteNonQuery();//execute the 'insert' query.
con.Close();

どうもありがとう

4

2 に答える 2

1

現在行っているように文字列連結を使用してクエリを作成する代わりに、パラメータ化されたクエリを使用します。

SqlCommand command = new SqlCommand();
command.Connection = someConnectionObj;
command.CommandText = "INSERT INTO Sometable (datecolumn) VALUES (@p_date)";
command.Parameters.Add ("@p_date", SqlDbType.DateTime).Value = someDate;
command.ExecuteNonQuery();

また、日付のように見える文字列の代わりに、実際の日付(DateTimeデータ型)を使用します。

于 2010-04-14T10:10:45.963 に答える
0

SQL Server 2005でこれを試したところ、レコード自体に秒数が含まれていることがわかりました。

試してみてください:

select 
    Start_At,
    convert(varchar(20), Start_At, 120) as Formatted_Start_At
from 
    ProcessData

Formatted_Start_Atに秒の値が含まれているかどうかを確認します。

もしそうなら、あなたのDBにはあなたが期待する実際の値が含まれているので、それはあなたの出力をフォーマットすることの問題です。

于 2010-04-14T16:32:26.760 に答える