Форум программистов, компьютерный форум, киберфорум
C#: Базы данных, ADO.NET
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.98/58: Рейтинг темы: голосов - 58, средняя оценка - 4.98
165 / 137 / 23
Регистрация: 02.01.2011
Сообщений: 913
1

Работа с базой данных

05.04.2011, 13:35. Показов 11161. Ответов 13
Метки нет (Все метки)

Как составить запрос к базе данных чтобы получить данные определенной таблицы по нескольким столбцам между полночью сегодняшнего дня и полночью предыдушего, т.е. как в запрос поместить что-то типа GetCurrrentDate? Да, и чтобы не зависеть от формата SQLL Server TimeStamp? Спасибо
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
05.04.2011, 13:35
Ответы с готовыми решениями:

Работа с базой данных
Нужно написать программу, которая отправляет запрос в базу данных на сайте и проверяет есть ли в...

Работа с базой данных
Всем привет! Сейчас делаю программу по учёту рабочего времени. Есть одна проблемка. Состоит она в...

Работа с базой данных
Есть обычное клиент-серверное приложение на сокетах. Сервер - обычное консольное приложение. ...

Работа с Базой Данных SQLCE 2
Уважаемые разработчики, подскажите пожалуйста как можно решить данную задачу Суть в следующим:...

__________________

Записывайтесь на профессиональные курсы С#-разработчиков‌
13
87 / 85 / 10
Регистрация: 04.04.2011
Сообщений: 221
05.04.2011, 13:49 2
C#
1
2
3
4
cmd = new OleDBCommand(cmdStr, locCon);
cmd.Parameters.Clear();
cmd.Parameters.Add("@startdate", OleDbType.Date);
cmd.Parameters["@startdate"].Value = zz.startDate;
Соответственно в строке запроса нужно использовать конструкцию тип
T-SQL
1
"datafield = @startdate"
0
165 / 137 / 23
Регистрация: 02.01.2011
Сообщений: 913
05.04.2011, 14:59  [ТС] 3
Спасибо, только непонятно, можно подробнее?
0
87 / 85 / 10
Регистрация: 04.04.2011
Сообщений: 221
05.04.2011, 15:01 4
iva_a, напишите пример кода, где вы делаете запрос - я на вашем коде попытаюсь объяснить
0
165 / 137 / 23
Регистрация: 02.01.2011
Сообщений: 913
05.04.2011, 15:15  [ТС] 5
Ну, пока я находила имена нужных таблиц и столбцов в них. теперь задача другая, но принцип обрашени я вроде тот же, нет?мне нужно обратиться к другой базе и получить уже сами данные. Parameter не использовала. Только коммандную строку. Неправильно? Но работает Критикуйте!!!
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
 var conn1 = new SqlConnection(conn.ConnectionString);
            try
            {
 
                conn1.Open();
                Console.WriteLine("DB MonitoredRemoteUnits connected");
                Console.ReadKey();
                // DB
                SqlCommand cmd = new SqlCommand(select1, conn1);
                SqlDataReader reader = cmd.ExecuteReader();
                
                while (reader.Read())
                {
 
                    Console.WriteLine("ChanelID : {0} ColumnIndex : {1} Name: {2} UnitID: {3}",
                    reader[0], reader[1], reader[2], reader[3]);
                    sFileName.Add(Convert.ToString(reader[2]));
                    sFullFileName.Add(DateTime.Now.Year + "_" + DateTime.Now.Month + "_" + Convert.ToString(reader[2]));
 
                }
                var uniq = sFileName.Distinct();//udalyayu povtoryayushiesya stroki
                var fullUnic = sFullFileName.Distinct();
 
 
                foreach (string s in fullUnic)//sohranyaem imya Unit
                {
                    fullUnicFileName.Add(s);
                    Console.WriteLine("Full Name:   !!!!!!!!!! " + s);
                }
                Console.ReadKey();
0
87 / 85 / 10
Регистрация: 04.04.2011
Сообщений: 221
05.04.2011, 15:33 6
Если работает, то чего критиковать?
И потом, не известна постановка задачи, не видно самого запроса, не известна структура таблицы - как можно что-то конкретное сказать?
0
165 / 137 / 23
Регистрация: 02.01.2011
Сообщений: 913
05.04.2011, 15:36  [ТС] 7
Да я просто пример привела, что не писала еше parameters Сеичас другая задача не получается(см.выше)Я никак не могу красиво составить строку запроса запуталась в between ...
0
87 / 85 / 10
Регистрация: 04.04.2011
Сообщений: 221
05.04.2011, 15:39 8
iva_a, напиши запрос, какой ты хочешь получить (там где запуталась так и укажи "вот тут не могу понять"). Нельзя поставить диагноз не получив анализов.
0
165 / 137 / 23
Регистрация: 02.01.2011
Сообщений: 913
05.04.2011, 15:50  [ТС] 9
Пишу прямо в Nеw SQL queru v SQLSERVER2008,т.е. еше даже не С#

C#
1
2
3
4
5
SELECT [MonitoredRemoteUnits_DataStorage].dbo.[UnitData_111049].TimeStamp,
        [MonitoredRemoteUnits_DataStorage].dbo.[UnitData_111049].Channel1,
        [MonitoredRemoteUnits_DataStorage].dbo.[UnitData_111049].Channel3
FROM [MonitoredRemoteUnits_DataStorage].dbo.[UnitData_111049]
WHERE [MonitoredRemoteUnits_DataStorage].dbo.[UnitData_111049].TimeStamp BETWEEN [MonitoredRemoteUnits_DataStorage].dbo.[UnitData_111049].TimeStamp=GETDATE AND [MonitoredRemoteUnits_DataStorage].dbo.[UnitData_111049].TimeStamp=(GETDATE-12)
Получаю ошибку
Msg 102, Level 15, State 1, Line 5
Incorrect syntax near '='.
0
87 / 85 / 10
Регистрация: 04.04.2011
Сообщений: 221
05.04.2011, 15:57 10
iva_a, http://msdn.microsoft.com/ru-r... 87922.aspx - Читаем внимательно и исправляем:

T-SQL
1
BETWEEN [MonitoredRemoteUnits_DataStorage].dbo.[UnitData_111049].TimeStamp=GETDATE AND [MonitoredRemoteUnits_DataStorage].dbo.[UnitData_111049].TimeStamp=(GETDATE-12)
на

T-SQL
1
BETWEEN GETDATE() AND (GETDATE()-12)
Только не понятно, зачем вы время сверяете с датой и еще отнимаете 12 дней?

Если вам нужно проверить от 0 часов до 23-59, то проверяйте DateStamp с текущей датой безо всяких "битвин"
0
165 / 137 / 23
Регистрация: 02.01.2011
Сообщений: 913
05.04.2011, 16:12  [ТС] 11
Упсс! Мне надо за последние не 12 днеи, 12 часов или 24 часа!!!
0
87 / 85 / 10
Регистрация: 04.04.2011
Сообщений: 221
05.04.2011, 16:16 12
Функция GetDate возвращает дату. Но можно ее перевести и в формат времени.
Посмотри по той ссылке, что я дал.
1
165 / 137 / 23
Регистрация: 02.01.2011
Сообщений: 913
05.04.2011, 16:35  [ТС] 13
Спасибо, сеичас посмотрю

Добавлено через 12 минут
И вдогонку... Делаю
C#
1
SELECT CONVERT (TIME, GETUTCDATE());
И получаю странное время 22:28:34:930000,т.е. вместо 3 дня 10 вечера? С этим можно как-то бороться?

Добавлено через 2 минуты
Поняла! Все нормально!
C#
1
2
SELECT CONVERT (date, GETDATE());
SELECT CONVERT (TIME, GETDATE());
0
87 / 85 / 10
Регистрация: 04.04.2011
Сообщений: 221
05.04.2011, 16:39 14
iva_a, приводи дату к формату Date-time.

Вот более полное описание формата даты и времени: http://msdn.microsoft.com/ru-r... 80878.aspx

Т.е. и поле и функцию GETDATE() не нужно конвертировать - они будут возвращаться в формате DateTime
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
05.04.2011, 16:39

Заказываю контрольные, курсовые, дипломные работы и диссертации здесь.

Работа с базой данных на сервере
Здравствуйте! Подскажите пожалуйста, как работать в VB.NET с базой данных MS SQL Server которая...

EF работа с файлами и базой данных
Добрый день. Есть программа, в ней присутствуют объекты, к каждому объекту должен быть прикреплён...

Работа с access базой данных
Добрый день, совсем начинающий в работе с базами данных не помучается сделать два вопроса. Смысл...

Работа с базой данных Access
Доброго времени суток. Есть база данных созданная в Access. Она подключена к проекту. Существует...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.