#c# #sql-server-2008 #date
#c# #sql-server-2008 #Дата
Вопрос:
У меня есть столбец типа данных DATE
в SQL Server 2008, в котором хранится только дата в формате «гггг-ММ-дд», но когда я выбираю дату из базы данных с помощью C # и преобразую в строку, она также отображает временную часть подобным образом.
"2012-04-21 12:00:00"
в чем проблема, я не сохранил время в базе данных, вот мой запрос!
string sql = @"select card_no, amount, csc,expdate "
"from user_account_card "
"where user_id = '" loginsession.Auser "';";
SqlCommand cmd = new SqlCommand(sql, con);
SqlDataReader red = cmd.ExecuteReader();
while (red.Read())
{
loginsession.Cardno = Convert.ToString(red["card_no"]);
loginsession.Cardamount = Convert.ToString(red["amount"]);
loginsession.Csc=Convert.ToString(red["csc"]);
loginsession.Expdate = Convert.ToString(red["expdate"]);//date part
break;
}
MessageBox.Show("database value from database--" loginsession.Expdate);
Пожалуйста, помогите мне, что делать
Ответ №1:
Если время отображается как полночь, то по сути, оно сохраняет его без учета времени.
В SQL есть тип данных даты, который не включает время, но вам необходимо изменить дизайн таблицы. Не уверен, нужно ли вам / хотите ли вы это сделать.
Вы также могли бы попробовать это:
((Date)red["expdate"]).ToString();
Поскольку это приведет к преобразованию в тип данных Date, а не в тип данных DateTime, вы должны просто увидеть часть даты в возвращаемой строке.
Комментарии:
1. «для всех намерений и задач»
2. @Martin — черт возьми, чувак, ты исправляешь мой английский? Похоже, что в SO могут быть более нуждающиеся цели. (Спасибо за подсказку) 😀
3. Должно быть ((DateTime) красным[«expdate»]). ToShortDateString();
4. @hogan: -Спасибо за подсказки, это работает в моем DateTime dt = Convert. Текущее время (красный [«expdate»]); сеанс входа в систему. Expdate= dt. toString(«дд-ММ-гггг»);
Ответ №2:
Преобразовать.В toString нет перегрузки «date», только «datetime»
Комментарии:
1. -Спасибо за информацию, теперь я преобразоваю это в какой-нибудь другой формат
Ответ №3:
SQL Server 2008 будет хранить только дату в DATE
столбце — вы можете легко проверить это в SQL Server Management Studio. Также: DATE
столбец не хранит дату в определенном строковом формате — это просто то, как вы это видите. Дата — это дата, это дата — она хранится как дата и не имеет никакого «формата» как такового.
Однако в .NET нет типа данных «только для даты», поэтому чтение DATE
столбца с SQL Server заканчивается в DateTime
переменной в .NET, которая содержит дату и ВРЕМЯ.
Так что на самом деле это не проблема SQL Server, а скорее проблема в .NET