2013-09-07 5 views
2

Для данных, сохраненных в форме выигрыша, формат входной даты (дд/мм/гггг). База данных показывает формат (yyyy-mm-dd). Как изменить формат даты?Как изменить формат даты базы данных SQL Server (2008)?

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!"); 
} 

даты время Piker (dtTmPkr) Формат (дд/мм/год)

+0

(yyyy-mm-dd) - это собственный формат данных SQL-сервера. вы можете перейти на любой конкретный формат, используя этот http://www.w3schools.com/sql/func_convert.asp – sudhAnsu63

ответ

4

SQL Server не хранит в любом формате строку DateTime - это хранится в виде 8 байтов числового значения.

Различные настройки (язык, формат даты) влияют только на то, как показано в окне SQL Server Management Studio DateTime - или как он анализируется при попытке преобразовать строку в DateTime.

Существует множество форматов, поддерживаемых SQL Server - см. Раздел MSDN Books Online on CAST and CONVERT.

Так на самом деле, это не об изменении формата даты в SQL Server - это о как форматировать и отображать Datetime, что вы извлечения из SQL Server. Используйте соответствующие T-SQL CONVERT параметров, или форматировать DateTime в вашем C# фронтального код

Update: если вы вставив значение из DateTimePicker в SQL Server, используя запрос, показанный в этом вопросе, вы должно быть просто отлично - оно вставляет параметр DateTime, поэтому у вас не будет проблем с форматированием строк ваших дат.

Если вам необходимо преобразовать DATETIME в SQL Server в определенном формате - используйте

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

, и это даст вам дату в формате dd/mm/yyyy (British/французский). Если вам нужен другой формат - используйте другой стиль (некоторое другое число, чем 103). Эти стили are very well documented here.

Если вы читали назад DateTime колонку в C# и вам нужно отформатировать его, а затем использовать

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

, чтобы получить необходимые значения. Остерегайтесь: отформатировать месяц, используйте MM (с заглавной буквы!), Потому что mm будет форматировать минут вашего DateTime.

+0

спасибо @marc_s ... как конвертировать PLZ объяснить. –

+0

+1 примечание к последнему блоку кода ответа: вам нужно использовать CultureInfo.InvariantCulture для форматирования/как разделителя даты, иначе он будет заменен фактическим разделителем даты вашей текущей культуры (если она отличается). –

+0

@TimSchmelter: отличная точка, спасибо! –

0

попытки разобрать дату для объекта даты и времени в C# перед добавлением в параметре.

DateTime Dt = DateTime.ParseExact(dtTmPkr.Value, "dd/MM/yyyy", CultureInfo.InvariantCulture); 
cmd.Parameters.AddWithValue("@currDate", Dt); 
+0

можете ли вы сказать, что я вышел из этого кода !!!!! @ sudhAnsu63 –

+0

Вы сталкиваетесь с проблемой сохранения данных или восстановления данные ? – sudhAnsu63

+0

Оба .... @ sudhAnsu63 –

-1

Используйте это:

SqlCommand cmd = new SqlCommand("INSERT INTO WtrTblAllot (WtrNm,Type,No,currDate) values (@WtrNm,@Type,@No,CONVERT(CHAR(10), @currDate, 103))", con); 
+0

PLZ определить, как это работает !!!! @ Bibhu заранее. –

+0

это изменение (yyyy/mm/dd toyyyy/dd/mm) не работает ... я хочу (dd/mm/yyyy) @Bibhu –

+0

@Abhishek Kumar Ashu - обновил мой ответ. Пожалуйста, проверьте. – Bibhu

Смежные вопросы