Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Общие вопросы по .NET и C# > Запрос по полю даты


Автор: Fedor 25.6.2004, 20:29
Как в C# сделать выборку из базы данных по полю Дата? База Аксесовская, поле имеет формат даты dd.mm.hhhh. Переменная в C#, по которою нужна вести выборку типа DateTime.

Автор: Kurt 25.6.2004, 23:30
Хмм... Немного не понимаю вопроса..
Тебе нужно сделать запрос, допустим, дата больше чего-то там?
Или ты не можешь достать данные из результата выполнения запроса?
Вобщем, я тебе написал небольшой примерчик.
Я создал таблицу MyTable с двумя столбцами c1 (числовой) и с2 (Дата).
Забил 3-мя строками:
1 01.01.2000
2 02.02.2002
3 26.06.2004

Короче, вот код (готов к компиляции):
Код

using System;
using System.Data;
using System.Data.OleDb;

class MainClass
{
public static void Main(string[] args)
{
 OleDbConnection cn=new OleDbConnection();
 cn.ConnectionString="Provider=Microsoft.Jet.OLEDB.4.0;"+@"data source=G:\Microsoft.NET\exercises\C#.NET\other\AccessData\baza.mdb";
 String SQLStr="select * from MyTable where (c2>#01/01/2001#)";
 cn.Open();
 OleDbCommand mycmd=new OleDbCommand(SQLStr,cn);
 OleDbDataReader reader=mycmd.ExecuteReader();
 int c1;
 DateTime c2;
 while(reader.Read()){
  c1=reader.GetInt32(0);
  c2=reader.GetDateTime(1);
  Console.WriteLine("c1="+c1+"\tc2="+c2);
 
 }
 reader.Close();
 cn.Close();
 Console.Read();
 return;
 
}
}


Это консольный проект.
Он просто выводит результат работы запроса.
Тут тока 2 интересных момента:
1)
Код

String SQLStr="select * from MyTable where (c2>#01/01/2001#)";

Обрати внимание, как записано условие, чтоб вытащить данные после 2001-го года. Честно признаюсь, я с этим дело раньше не имел. Поэтому результат получен методом научного тыка - может, можно по-другому сделать, но так точно работает. smile.gif
2)
Данные типа DateTime достаются из reader'a:
Код
c2=reader.GetDateTime(1);

Все. Надеюсь, тебе это чем-то помогло.
Удачи!

Автор: Fedor 25.6.2004, 23:57
Kurt Был бы ты девушкой, я б тебя щас расцеловал. а так просто добавлю рейтинг. smile.gif
biggrin.gif biggrin.gif rolleyes.gif hehe.gif

Автор: Kurt 26.6.2004, 01:40
Всегда приятно слышать такие слова. smile.gif
Успеха тебе и твоему проекту!

Автор: Finkel 27.6.2004, 01:50
хм, вроде в SQL сть такая вещи как выделение даты :
Select * from MyTable where month(название колонки в которой содержится дата)>2
Аналогично есть команда Year & Day которые в свою очередь выделяют год и день соответсвенно.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)