计算结果的日期时间戳

时间:2013-03-18 11:21:21

标签: sql oracle-sqldeveloper

我有一个表格,其中包含userids列表和执行交易时的日期时间stamp。它看起来如下:

UserId | Stamp   
 John11| 01/01/2013 01:15:27

我想返回一个查询,该查询显示每个用户完成了多少笔交易。

我尝试了count,但由于stamp的时间部分,它对每个毫秒而不是整体都是重要的。

提前致谢

4 个答案:

答案 0 :(得分:0)

使用time_to_sec函数获取实际值。

Select count(UserId), UserId from table where time_to_sec(stamp) between 
fromTime and toTime
-- fromTime and toTime are interval period 

答案 1 :(得分:0)

您的问题没有说明您想要的时间段,但以下是您可以适应其他时段的月份示例:

SELECT 
  (DATEPART(YEAR, Stamp) * 100) + RIGHT('0' + DATEPART(MONTH, Stamp), 2) AS month_group
  ,COUNT(*) AS count
FROM MyTable
GROUP BY
  (DATEPART(YEAR, Stamp) * 100) + RIGHT('0' + DATEPART(MONTH, Stamp), 2)

或仅限一段时间使用;

SELECT 
  COUNT(*) AS count
FROM MyTable
WHERE Stamp BETWEEN ? AND ?

答案 2 :(得分:0)

 select user_id,count(userid) cnt from table
 where stamp between to_timestamp('01-01-2013 01:15:27', 'DD-MM-YYYY HH:MI:SS') and
 to_timestamp('03-01-2013 12:15:27', 'DD-MM-YYYY HH:MI:SS') 
 group by user_id

答案 3 :(得分:0)

根据您的计算方式,这样的事情应该有效。

dd-mon-yyyy的唯一出现hh24:mi:用户ID的ss被计算在内。

SELECT userid
,      count(distinct TO_CHAR(stamp, 'dd-mon-yyyy hh24:mi:ss'))
FROM   MYTABLE
where  stamp > to_date('16-03-2013','DD-MM-YYYY')
group by userid

实例:http://sqlfiddle.com/#!4/71241/1