Тип данных ДАТЫ времени восстановления SQL Server 2008!

#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