2015-12-03 7 views
2

У меня есть таблица в MS-SQL базы данных, которая содержит даты в колонке, как так:Преобразование даты в нужном формате

2010-06-24 00:00:00.000 

Тогда в C#, я получаю эти даты ж/заявление и назначить его переменная, которая заполняет столбец сетки на веб-странице, сделанной w/asp.net.

  SqlCommand command = new SqlCommand(); 
      //connection info here 
      sql2 = "(select statement here); 
      command.CommandText = sql2; 
      dates["Entry"] = command.ExecuteScalar(); 

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

06/24/2010 

Я попытался преобразовать его времени и даты с помощью:

ToString("MM/dd/yyyy") 

Я попытался с помощью ридера вместо этого и делать что-то вроде:

reader.GetDatetime.toString("MM/dd/yyy") 

который также не работал. Я просто не могу найти правильный способ сделать это. Любые советы были бы замечательными.

Edit: Вот SQL2 заявление:.

sql2 = "select max(day) as day from users u join days d on d.User_ID = u.id where u.ActiveUser = 1 and u.id = " + Users["ID"].ToString(); 

Это просто получить самую последнюю дату пользователь вошел материал в

Edit 2: дата, которая показывает в сетке например, «3/12/2013 12:00:00 AM».

Редактировать 3: Функция .ExecuteScalar(), кажется, автоматически форматирует дату до формата «3/12/2013 12:00:00 AM».

ответ

0

Просто измените свой формат на yyyy-MM-dd;

dates["Entry"] = ((DateTime)command.ExecuteScalar()).ToString("yyyy-MM-dd", 
                CultureInfo.InvariantCulture); 
+0

Могу ли я спросить, что CultureInfo это? Это неверно, когда я пытаюсь его использовать. – pfinferno

+0

@pfinferno О, право, 'ExecuteScalar' возвращает' object'.Я предположил, что возвращаемый вами тип столбца сопоставляется с 'DateTime' на стороне CLR, вам нужно получить _textual_ представление вашего' DateTime'. 'InvariantCulture' гарантированно генерирует представление Gregorian Calendar вашего значения' DateTime'. –

+0

О, я вижу, спасибо за ответ! Я пробовал то, что вы делали, и подобные вещи раньше. Я получаю эту ошибку, хотя «InvalidCastException был необработанным кодом пользователя». - Указанный сброс недействителен. – pfinferno

0

2010-06-24 Если вы хотите, чтобы отобразить DateTime как это вы просто передать в формате строку «гггг-мм-дд», так что это будет выглядеть так:

string Date = new DateTime(2010, 6, 24).ToString("yyyy-mm-dd"); 

You можете прочитать больше о том, что форматы вы можете выводить на DateTime по этой ссылке: https://msdn.microsoft.com/en-us/library/zdtaw1bw(v=vs.110).aspx

0

вы также можете использовать ToShortDateString() функцию, чтобы отрезать время string-:

reader.GetDatetime.ToShortDateString(); 
0

Попробуйте следующее в SQL:

select CONVERT(datetime, column_name, 101) from table_name 

101 - это DateTime стиль. Вы можете найти все стили от link в

Также в коде позади:

Convert.ToDateTime(reader["column"].ToString()).ToShortDateString(); 

Надеется, что это помогает

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