powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Ещё вопрос по выборке
25 сообщений из 25, страница 1 из 1
Ещё вопрос по выборке
    #39337063
Фотография Gallemar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У меня есть система мониторинга одного процесса в программе,его запускают пользователи
в мониторинг кроме всего остального попадают два значени даты (первый диалект) - первое - непосредственно время запуска процесса, второе - параметр,который выбирает пользователь, он должен быть первое значение 0 часов 0 минут 0 секунд минус сутки
т.е. в правильном варианте это должно быть так:
2016-10-04 10:20:18 2016-10-03 00:00:00
2016-10-04 10:22:17 2016-10-03 00:00:00

остальные варианты ошибочны и их надо поймать
...
Рейтинг: 0 / 0
Ещё вопрос по выборке
    #39337064
Фотография Gallemar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ошибочные варианты:
2016-10-05 10:12:36 2016-10-04 05:02:18
2016-10-06 10:57:01 2016-10-06 05:02:29
2016-10-12 08:37:07 2016-10-11 08:36:43
...
Рейтинг: 0 / 0
Ещё вопрос по выборке
    #39337071
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Gallemar,

иди ка ты отдыхать

Код: plsql
1.
2.
3.
4.
5.
CREATE FUNCTION EXTRACT_DATE(ADATE DATE) RETURNS DATE
AS
BEGIN
  RETURN EXTRACT(YEAR FROM ADATE) || '-' || EXTRACT(MONTH FROM ADATE) || '-' || EXTRACT(DAY FROM ADATE);
END 
...
Рейтинг: 0 / 0
Ещё вопрос по выборке
    #39337078
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Gallemar,

поймать это EXCEPTION кинуть что ли?
...
Рейтинг: 0 / 0
Ещё вопрос по выборке
    #39337082
Фотография Gallemar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов ДенисGallemar,
иди ка ты отдыхать


Сейчас пойду. Не компилируется. Или я чего-то не понимаю.
...
Рейтинг: 0 / 0
Ещё вопрос по выборке
    #39337086
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Gallemar,

ну ты чего совсем устал? Это же PSQL функция. Начиная с 3.0 такое возможно. В 2.5 только ХП, но в твоём случае просто выражение по месту подставить. Тебе ещё 1 день отнять надо.
...
Рейтинг: 0 / 0
Ещё вопрос по выборке
    #39337092
Фотография Gallemar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денис,ааа
У меня 2.5, но общий смысл я понял. Это уже на завтра оставлю.
Я на недельной учебе-командировке был, ночь с днем теперь путаю.
...
Рейтинг: 0 / 0
Ещё вопрос по выборке
    #39337487
Фотография Gallemar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А в первом диалекте EXTRACT нормально работает?
Попробовал использовать, даже на пробном шаре получаю:
select (extract (year from '2016-10-05 10:12:36')) from rdb$database
Invalid String.
Dynamic SQL Error.
SQL error code = -105.
Specified EXTRACT part does not exist in input datatype.
...
Рейтинг: 0 / 0
Ещё вопрос по выборке
    #39337500
Граур Станислав
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GallemarА в первом диалекте EXTRACT нормально работает?
Попробовал использовать, даже на пробном шаре получаю:
select (extract (year from '2016-10-05 10:12:36')) from rdb$database
Invalid String.


А так ?

Код: plsql
1.
select extract (year from cast('2016-10-05 10:12:36' as timestamp)) from rdb$database
...
Рейтинг: 0 / 0
Ещё вопрос по выборке
    #39337502
Фотография Gallemar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Граур Станислав,ага, получилось,спасибо
...
Рейтинг: 0 / 0
Ещё вопрос по выборке
    #39337509
Фотография Gallemar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Помогите,всё равно не понимаю как сделать
...
Рейтинг: 0 / 0
Ещё вопрос по выборке
    #39337525
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Gallemar,

ты так и не ответил. Тебе EXCEPTION нужен когда пользователь неправильно ввёл или преобразовать его ввод так чтобы оттуда время убрать? Зачем вообще пользователя заставлять вводить то, что вычисляется из первой даты?
...
Рейтинг: 0 / 0
Ещё вопрос по выборке
    #39337554
Фотография Gallemar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов ДенисGallemar,

ты так и не ответил. Тебе EXCEPTION нужен когда пользователь неправильно ввёл или преобразовать его ввод так чтобы оттуда время убрать? Зачем вообще пользователя заставлять вводить то, что вычисляется из первой даты?
Да это вообще пользователем не вводится. Первое значение берется из current_timestamp, второе - приходит с формы. Поэтому по ошибкам я могу узнать постфактум из отчета. Пользователей много,выбирать каждый день ошибки вручную неудобно, вот и хочу сделать выборку только с ошибочными вариантами.
...
Рейтинг: 0 / 0
Ещё вопрос по выборке
    #39337558
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Gallemar,

не проще ли не допускать неправильный ввод? Т.е. делать валидацию до отправки формы, с помощью JavaScript например
...
Рейтинг: 0 / 0
Ещё вопрос по выборке
    #39337565
Фотография Gallemar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денис, JavaScript на Delphi? Такое возможно в VCL?
0_0
...
Рейтинг: 0 / 0
Ещё вопрос по выборке
    #39337567
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Gallemar,

я думал ты веб форму имеешь ввиду. Смешались твои посты в кучу. А в Delphi, то ещё проще.
...
Рейтинг: 0 / 0
Ещё вопрос по выборке
    #39337570
Фотография Gallemar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денис, извини. У меня основное приложение на Delphi, закрытое, а я пишу веб-интерфейс для мониторинга.
...
Рейтинг: 0 / 0
Ещё вопрос по выборке
    #39337594
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Gallemar,

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
CREATE PROCEDURE CHECK_UASERDATE(ADATE TIMESTAMP)
AS
  DECLARE SEC INT;
  DECLARE MIN INT;
  DECLARE H INT;
  DECLARE CUR_DATE TIMESTAMP;
  DECLARE BEGIN_DATE TIMESTAMP;
BEGIN
   CUR_DATE = CAST(EXTRACT(YEAR FROM CURRENT_TIMESTAMP) || '-' || 
                             EXTRACT(MONTH FROM CURRENT_TIMESTAMP) || '-' || 
                             EXTRACT(DAY FROM CURRENT_TIMESTAMP) AS TIMESTAMP);  
   BEGIN_DATE = CAST(EXTRACT(YEAR FROM ADATE) || '-' || 
                             EXTRACT(MONTH FROM ADATE) || '-' || 
                             EXTRACT(DAY FROM ADATE) AS TIMESTAMP);  
   IF (ADATE > BEGIN_DATE AND CUR_DATE - BEGIN_DATE > 1) THEN
     EXCEPTION E_INCORRECT_DATE;
END



так пойдёт?
...
Рейтинг: 0 / 0
Ещё вопрос по выборке
    #39337608
Фотография Gallemar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денис,а зачем
declare variable SEC integer;
declare variable min integer;
declare variable H integer;

если они нигде не используются? Ну и MIN зарегистрирован, его даже закавыченный не получается скомпилировать.
Эксепшен не нужен. Мой отчет тянет данные из таблицы
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
CREATE TABLE ZM_LOAD_CASH (
    TIME_WRITE        DATE,
    DATE_LOAD         DATE,
    FULL_LOAD         CHAR(1),
    CASH_LOAD         INTEGER,
    SESSION_LOAD      INTEGER,
    KIND_LOAD         INTEGER,
    SHOPINDEX_LOAD    INTEGER,
    FILIALINDEX_LOAD  INTEGER,
    USER_LOAD         VARCHAR(80)
);



запросом
Код: plsql
1.
2.
3.
select lc.*, tc.name as f_name from ZM_LOAD_CASH lc
left join th_classif tc
on lc.filialindex_load = tc.id_th_classif where USER_LOAD <> 'Дисконт' and TIME_WRITE BETWEEN '$TIME_WRITE1' and '$TIME_WRITE1 23:59:59'   and FULL_LOAD in ('$TIME_WRITE2') $SORT  



Мне нужно выбирать ошибки запросом (что наверно не получится) или селективной процедурой.
...
Рейтинг: 0 / 0
Ещё вопрос по выборке
    #39337619
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Gallemar,

извиняюсь я этe процедуру даже не проверял, написал прямо на форуме из головы.
...
Рейтинг: 0 / 0
Ещё вопрос по выборке
    #39337626
Фотография Gallemar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Дениснаписал прямо на форуме из головы.
Я так и подумал. А как то селективной процедурой мой вопрос решить можно?
...
Рейтинг: 0 / 0
Ещё вопрос по выборке
    #39337642
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Gallemar,

я не совсем понял что ты хочешь. $TIME_WRITE1 это и есть CURRENT_DATE? И что это за FULL_LOAD in ('$TIME_WRITE2')?

Может тебе вот этого достаточно

Код: sql
1.
2.
3.
4.
5.
6.
select lc.*, tc.name as f_name from ZM_LOAD_CASH lc
left join th_classif tc
on lc.filialindex_load = tc.id_th_classif 
where USER_LOAD <> 'Дисконт' 
  and TIME_WRITE > '$TIME_WRITE1' and TIME_WRITE <= '$TIME_WRITE1 23:59:59.0000'   
  and FULL_LOAD in ('$TIME_WRITE2') $SORT  
...
Рейтинг: 0 / 0
Ещё вопрос по выборке
    #39337681
Фотография Gallemar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов ДенисGallemar,

я не совсем понял что ты хочешь. $TIME_WRITE1 это и есть CURRENT_DATE? И что это за FULL_LOAD in ('$TIME_WRITE2')?

Может тебе вот этого достаточно

Код: sql
1.
2.
3.
4.
5.
6.
select lc.*, tc.name as f_name from ZM_LOAD_CASH lc
left join th_classif tc
on lc.filialindex_load = tc.id_th_classif 
where USER_LOAD <> 'Дисконт' 
  and TIME_WRITE > '$TIME_WRITE1' and TIME_WRITE <= '$TIME_WRITE1 23:59:59.0000'   
  and FULL_LOAD in ('$TIME_WRITE2') $SORT  


$TIME_WRITE1 - это дата с веб-интерфейса, день за который берем данные. FULL_LOAD in ('$TIME_WRITE2') это дополнительное условие, это не время, просто на скорую руку писал, вот и оставил так. $SORT это по какому полю сортировать, галочка с веб передает order by
...
Рейтинг: 0 / 0
Ещё вопрос по выборке
    #39337692
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Gallemar,

в этом виде он у тебя и так отсекает правильные варианты с 00:00:00, оставляя только со временем. Осталось только с CURRENT_TIMESTAMP связать. Что там должно быть я не понял.
...
Рейтинг: 0 / 0
Ещё вопрос по выборке
    #39337709
Фотография Gallemar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денис,
не отсекает. Правильно или неправильно смотрим по полю DATE_LOAD, в моем запросе по нему никакой фильтрации нет. В самом начале темы я писал пример правильного/неправильного варианта:
TIME_WRITE DATE_LOAD
2016-10-05 10:12:36 2016-10-04 05:02:18
2016-10-06 10:57:01 2016-10-06 05:02:29
2016-10-12 08:37:07 2016-10-11 08:36:43
2016-10-04 10:20:18 2016-10-03 00:00:00
2016-10-04 10:22:17 2016-10-03 00:00:00

Вот так должно быть понятнее. Правильный вариант выделен красным.
...
Рейтинг: 0 / 0
25 сообщений из 25, страница 1 из 1
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Ещё вопрос по выборке
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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