Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Как получить записей за текущий день? / 25 сообщений из 25, страница 1 из 1
18.10.2019, 09:14
    #39878012
ularsoft
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как получить записей за текущий день?
Здравствуйте!

Имеется таблица CDok:
cDate cKod cName15.09.2019 18:25:45 0 Компьютер15.09.2019 18:29:23 0 Мышь20.09.2019 10:02:31 0 Клавиатура18.10.2019 10:18:53 0 Коврик18.10.2019 10:38:43 0 Монитор
Написал следующий запрос для получения всех записей:
Код: sql
1.
2.
3.
4.
    qCDok.Close;
    qCDok.SQL.Clear;
    qCDok.SQL.Add('select * from CDok);
    qCDok.Open;


Подскажите, пожалуйста, как мне получить информацию за текущий день? Заранее благодарен.
...
Рейтинг: 0 / 0
18.10.2019, 09:37
    #39878023
wadman
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как получить записей за текущий день?
ularsoft
Код: sql
1.
qCDok.SQL.Add('select * from CDok);


Не компилируется. :(

http://sql-ex.ru/ - там много полезной информации по sql
...
Рейтинг: 0 / 0
18.10.2019, 09:40
    #39878026
Gerasimenko
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как получить записей за текущий день?
ularsoft,

Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
var
 d:TDadeTime;

begin
 d:=Trunc(Now);
...
 qCDok.SQL.Add('select * from CDok where cDate between :d1 and :d2');
 


Тип cDate не известен, но будем полагать,что это дата. Если нет, то в запросе нужно преобразовать к дате.
...
Рейтинг: 0 / 0
18.10.2019, 10:22
    #39878054
ularsoft
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как получить записей за текущий день?
Gerasimenko
Код: pascal
1.
2.
3.
4.
5.
6.
var
 d:TDadeTime;
begin
 d:=Trunc(Now);
...
 qCDok.SQL.Add('select * from CDok where cDate between :d1 and :d2');


Тип cDate - Дата/ВремяНо, с чем связан d с :d1 and :d2 ?
...
Рейтинг: 0 / 0
18.10.2019, 10:27
    #39878058
ularsoft
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как получить записей за текущий день?
Из таблицы CDok:
cDate cKod cName15.09.2019 18:25:45 0 Компьютер15.09.2019 18:29:23 0 Мышь20.09.2019 10:02:31 0 Клавиатура18.10.2019 10:18:53 0 Коврик18.10.2019 10:38:43 0 Монитор
Я должен получить следующие данные за текущий день:
cDate cKod cName18.10.2019 10:18:53 0 Коврик18.10.2019 10:38:43 0 Монитор
...
Рейтинг: 0 / 0
18.10.2019, 10:30
    #39878062
goldmi45
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как получить записей за текущий день?
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
var
 d:TDadeTime;
begin
 d:=Trunc(Now);
...
 qCDok.SQL.Add('select * from CDok where cDate between :d1 and :d2');
 qCDok.ParamByName('d1').AsDateTime := d;
 qCDok.ParamByName('d2').AsDateTime := d + 1; //Если для ваших целей подходит, т.е. нет записей от 00:00:00.
 qCDok.Open;
end;
...
Рейтинг: 0 / 0
18.10.2019, 10:30
    #39878063
Gerasimenko
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как получить записей за текущий день?
ularsoftGerasimenko
Код: pascal
1.
2.
3.
4.
5.
6.
var
 d:TDadeTime;
begin
 d:=Trunc(Now);
...
 qCDok.SQL.Add('select * from CDok where cDate between :d1 and :d2');


Тип cDate - Дата/ВремяНо, с чем связан d с :d1 and :d2 ?

d1 := d
d2 :=d+1
...
Рейтинг: 0 / 0
18.10.2019, 10:41
    #39878072
ularsoft
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как получить записей за текущий день?
Вау-у-у круто ребята!
...
Рейтинг: 0 / 0
18.10.2019, 10:51
    #39878083
DimaBr
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как получить записей за текущий день?
Код: pascal
1.
2.
qCDok.SQL.Text := 'select * from CDok where convert(datetime, cDate,112)=:S;
qCDok.Params[0].Value := FormatDateTime('yyyymmdd',Date());
...
Рейтинг: 0 / 0
18.10.2019, 10:56
    #39878091
wadman
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как получить записей за текущий день?
DimaBr
Код: pascal
1.
2.
qCDok.SQL.Text := 'select * from CDok where convert(datetime, cDate,112)=:S;
qCDok.Params[0].Value := FormatDateTime('yyyymmdd',Date());


Так индексы не зацепятся.
...
Рейтинг: 0 / 0
18.10.2019, 11:22
    #39878123
DimaBr
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как получить записей за текущий день?
wadmanТак индексы не зацепятся.
Не ругайся матерными словами
...
Рейтинг: 0 / 0
18.10.2019, 11:35
    #39878140
DarkMaster
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как получить записей за текущий день?
ularsoft,

Ты бы хоть БД озвучил. Где данные-то лежат?
...
Рейтинг: 0 / 0
18.10.2019, 11:43
    #39878148
ularsoft
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как получить записей за текущий день?
DarkMaster, БД в озвучил. Где данные-то лежат?БД в MS Access. Сорри.
...
Рейтинг: 0 / 0
18.10.2019, 11:55
    #39878159
ularsoft
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как получить записей за текущий день?
Ребята, за текущий день, все хорошо. А за период как сделать?
...
Рейтинг: 0 / 0
18.10.2019, 11:59
    #39878162
DarkMaster
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как получить записей за текущий день?
ularsoft,

Подставить в параметры нужные даты (период) не предлагать?
...
Рейтинг: 0 / 0
18.10.2019, 12:08
    #39878172
goldmi45
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как получить записей за текущий день?
ularsoftРебята, за текущий день, все хорошо. А за период как сделать?
Это решение как раз "за период". Просто период равен одному дню.
...
Рейтинг: 0 / 0
18.10.2019, 12:36
    #39878191
ularsoft
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как получить записей за текущий день?
Если я использую так,
Код: sql
1.
2.
3.
4.
  CDok.SQL.Add('Select * from CDok ');
  CDok.SQL.Add('where cDate between :p1 and :p2');
  CDok.ParamByName('p1').Value :=StrToDate(DBDateTimeEditEh1.Text);
  CDok.ParamByName('p2').Value :=StrToDate(DBDateTimeEditEh2.Text);
...
Рейтинг: 0 / 0
18.10.2019, 13:19
    #39878229
DarkMaster
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как получить записей за текущий день?
ularsoft,

Кошернее:

Код: pascal
1.
 Query.ParamByName('MyDateParam').AsDate := DateTimeEditEh1.Value;



И да, зачем тебе именно DB DateTimeEdit - не сильно понятно. Можно использовать любой датепикер - их тьма.
...
Рейтинг: 0 / 0
18.10.2019, 13:54
    #39878267
ёёёёё
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как получить записей за текущий день?
DarkMasterИ да, зачем тебе именно DB DateTimeEdit - не сильно понятно. Можно использовать любой датепикер - их тьма.
В EhLib эдиты универсальные, не назначил датасорс - вон он и не "дб".
...
Рейтинг: 0 / 0
21.10.2019, 12:19
    #39879224
ularsoft
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как получить записей за текущий день?
Добрый день!
Подскажите, пожалуйста, где я допустил ошибку?
Написал такой запрос и не срабатывает:
Код: sql
1.
2.
3.
4.
5.
6.
7.
  qZapros.Close;
  qZapros.SQL.Clear;
  qZapros.SQL.Add('Select * from CDok ');
  qZapros.SQL.Add('where cOper="Покупка" and cDate between :p1 and :p2');
  qZapros.ParamByName('p1').AsDateTime :=StrToDate(DBDateTimeEditEh1.Text);
  qZapros.ParamByName('p2').AsDateTime :=StrToDate(DBDateTimeEditEh2.Text)+1;
  qZapros.Open;

Хочу получить только купленные комплектующие...
...
Рейтинг: 0 / 0
21.10.2019, 12:51
    #39879251
Gerasimenko
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как получить записей за текущий день?
ularsoft,

потому, что : " это не две одинарные кавычки.
А вот если бы ты использовал параметр, то такой фигни бы не было.

cOper=:cOper
...
Рейтинг: 0 / 0
21.10.2019, 13:11
    #39879273
ularsoft
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как получить записей за текущий день?
GerasimenkocOper=:cOper Я так и сделал. Круто ребята. Только вместо :cOper использовал :p3
...
Рейтинг: 0 / 0
21.10.2019, 15:39
    #39879403
DarkMaster
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как получить записей за текущий день?
ularsoft,

Код: pascal
1.
2.
  Q.ParamByName('XXXXX').AsDateTime := StrToDate(YYY.Text);   // это явно лишнее преобразование.
  // достаточно использовать Value
...
Рейтинг: 0 / 0
21.10.2019, 15:43
    #39879410
DarkMaster
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как получить записей за текущий день?
ularsoft,

Ну и есть еще модуль DateUtils, которые разные операции с датой/временем делает. Аналог есть в JCL - я кто к тому, что прямые манипуляции с DateTime переменной (плюс, минус и т.п.), если не понимаешь смысла этих манипуляций - вылезут боком.
...
Рейтинг: 0 / 0
22.10.2019, 16:12
    #39880037
Alexander Zuev
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как получить записей за текущий день?
ularsoftGerasimenkocOper=:cOper Я так и сделал. Круто ребята. Только вместо :cOper использовал :p3
Ну да. Так то оно наглядней :)
...
Рейтинг: 0 / 0
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Как получить записей за текущий день? / 25 сообщений из 25, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]