Intime и OutTime для Измененной даты - PullRequest
0 голосов
/ 10 июня 2009

Вопрос уже опубликован 4 июня, но до сих пор не получен правильный ответ.

Структура таблицы:

T_Person - Таблица 1

CARDNO 

168 
471 
488 
247 
519 
518 
331 
240 
518 
386 
441 
331

T_Cardevent - Таблица 2

CARDEVENTDATE CARDEVENTTIME 

20090225 163932
20090225 164630
20090225 165027
20090225 165137
20090225 165147
20090225 165715
20090225 165749
20090303 162059
20090303 162723
20090303 155029
20090303 155707
20090303 162824 

Запрос

SELECT CARDNO,  CARDEVENTDATE, (1000000 * CAST (CARDEVENTDATE AS BIGINT) + CAST (CARDEVENTTIME AS BIGINT) - 30001) / 1000000 AS CardEvenDateAdjusted, CARDEVENTTIME
FROM T_CARDEVENT
WHERE (CARDEVENTDATE > 20090601)
GROUP BY CARDNO, CARDEVENTDATE, CARDEVENTTIME, (1000000 * CAST(CARDEVENTDATE AS BIGINT) + CAST(CARDEVENTTIME AS BIGINT) - 30001) / 1000000
ORDER BY CARDNO, CARDEVENDATEADJUSTED

Из приведенного выше запроса правильно отображается дата в соответствии с этим временем с 03:00:01 до 03:00:00

Как получить мин (время) и Макс (время) для скорректированной даты?

Мне нужен запрос SQL для вышеуказанного условия.

1 Ответ

1 голос
/ 18 января 2010

Если вы хотите MIN / MAX из всех значений CARDEVENTTIME:

SELECT MIN(CARDEVENTTIME)
     , MAX(CARDEVENTTIME)
  FROM T_Cardevent

Результат:

MIN_CARDEVENTTIME MAX_CARDEVENTTIME
----------------- -----------------
155029            165749

или, если вы хотите, чтобы они были отсортированы по CARDEVENTDATE:

SELECT CARDEVENTDATE
     , MIN(CARDEVENTTIME) AS MIN_CARDEVENTTIME
     , MAX(CARDEVENTTIME) AS MAX_CARDEVENTTIME
  FROM T_Cardevent
 GROUP BY CARDEVENTDATE

Результат:

CARDEVENTDATE MIN_CARDEVENTTIME MAX_CARDEVENTTIME
------------- ----------------- -----------------
20090225      163932            165749
20090303      155029            162824
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...