修改日期的Intime和OutTime

时间:2009-06-10 09:25:46

标签: sql

问题已于6月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 个答案:

答案 0 :(得分:1)

如果您想要所有CARDEVENTTIME值的MIN / MAX:

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