0

助けてください。

SQLServer 2005でDateTime列をフォーマットして、次のフォーマットを格納するにはどうすればよいですか:(mm / dd / yyy HH:MM:SS AM / PM)

以下は私のコードです:

        private void UpdateRecord(string status, int approvalid, DateTime modifiedDate)
    {
        SqlConnection conn = new SqlConnection(_strConn);
        SqlCommand cmd = new SqlCommand(@"UPDATE MyLeaveStatusSP SET LeaveStatus = @LeaveStatus, ModifiedDate = @ModifiedDate WHERE ApprovalID = @ApprovalID;", conn);
        cmd.Parameters.Add("@LeaveStatus", SqlDbType.NVarChar, 50).Value = status;
        cmd.Parameters.Add("@ApprovalID", SqlDbType.Int).Value = approvalid;
        cmd.Parameters.Add("@ModifiedDate", SqlDbType.DateTime).Value = modifiedDate;
        cmd.Connection = conn;
        cmd.CommandType = CommandType.Text;

        try
        {
            conn.Open();
            cmd.ExecuteNonQuery();
        }
        catch (Exception err)
        {
            System.Diagnostics.Debug.WriteLine("ERROR: " + err.Message);
        }
        finally
        {
            conn.Close();
        }
    }
4

3 に答える 3

5

フォーマットは必要ありません。SQLは日付をそのまま挿入できる必要があります。

SQLは日付を保存する方法を知っています。フォーマットはUIで行う必要があります。

さて、あなたが日付をvarcharフィールドに保存しているなら、それは別の話です、それに対して私は単に答えます:しないでください。

于 2010-11-13T16:34:17.113 に答える
1

本当に必要な場合は、.NETで変換して文字列を渡すか、日付を受け取って変換するストアドプロシージャを呼び出すことができます。日時の事前定義された形式のいずれとも一致しないため、独自にロールする必要がありますが、面倒な場合、これは簡単です。

select right('0' + cast(datepart(dd, @dt) as varchar(2)), 2)
 + '/'
 + right('0' + cast(datepart(mm, @dt) as varchar(2)), 2)
 + '/'
 + right(cast(datepart(yyyy, @dt) as varchar(4)), 3) -- are you sure you want yyy and not yyyy?
 + ' '
 + right('0' + cast(datepart(hh, @dt) % 12 as varchar(2)), 2)
 + ':'
 + right('0' + cast(datepart(mi, @dt) as varchar(2)), 2)
 + ':'
 + right('0' + cast(datepart(ss, @dt) as varchar(2)), 2)
 + ' '
 + (case when datepart(hh, @dt) < 12 then 'AM' else 'PM' end)

それでも、日付を文字列としてデータベースに保存することは非常に悪い考えであり、問​​題を引き起こす可能性があるため、LittleBobbyTablesの回答に賛成票を投じています。他の人のコードを処理する必要がある場合に備えて、変換の方法について詳しく説明しているだけです。

于 2010-11-13T17:00:24.237 に答える
0

上で述べたように、データを保存するときにフォーマットを設定するのではなく、出力時に制御します。CONVERT関数を使用して出力のフォーマットを変更する簡単な方法を次に示します。

于 2010-11-13T16:42:29.957 に答える