Как отформатировать SQLServer DateTime (мм / дд / ггг ЧЧ: ММ: СС AM / PM) - PullRequest
0 голосов
/ 13 ноября 2010

Помогите пожалуйста.

Как мне отформатировать столбец DateTime в SQLServer 2005, чтобы сохранить следующий формат: (мм / дд / ггг ЧЧ: ММ: СС 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();
        }
    }

Ответы [ 3 ]

5 голосов
/ 13 ноября 2010

Нет необходимости форматировать - SQL должен иметь возможность вставлять дату как есть.

SQL знает, как сохранить дату; форматирование должно быть сделано в пользовательском интерфейсе.

Теперь, если вы храните дату в поле varchar, это другая история, на которую я бы просто ответил: Не надо.

1 голос
/ 13 ноября 2010

Если вам действительно нужно, вы можете либо выполнить преобразование в .NET и передать строку, либо вызвать хранимую процедуру, которая получает дату и преобразует ее. Так как он не соответствует ни одному из предопределенных форматов для datetime, вам придется свернуть свой собственный, но это тривиально, если громоздко:

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, так как хранение дат в виде строк в базе данных - очень плохая идея и может вызвать проблемы. Я только подробно описываю, как выполнить преобразование, если вам приходится иметь дело с чужим кодом.

0 голосов
/ 13 ноября 2010

Как указано выше, вы не устанавливаете форматирование при сохранении данных ... вы управляете ими при выводе.Вот несколько простых способов изменить форматирование на выходе с помощью функции CONVERT.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...