您的位置:首页 > 其它

关于DATEDIFF 函数_学习笔记(临时)

2012-09-10 11:03 417 查看
关于DATEDIFF 函数

脚本:

select gpc.dtime,count( distinct gpc.S_ACCOUNT) as active from (

select convert(varchar(10),a.D_BEGIN,120) as dtime ,b.n_issuer_id,b.S_ACCOUNT,

cast(SUM(DATEDIFF(hh,a.D_BEGIN,CASE WHEN a.D_END IS NULL THEN GETDATE() ELSE a.D_END END))*1.00/count(distinct a.n_aid) as numeric(18,2)) times

from dbo.GAME_LOG_chosen_2012_9 a

left join pp_passport b

on a.N_AID=b.N_AID

where a.D_BEGIN>='2012-09-01'

and a.D_END<'2012-09-08'

group by convert(varchar(10),a.D_BEGIN,120) ,b.S_ACCOUNT,b.n_issuer_id

having cast(SUM(DATEDIFF(hh,a.D_BEGIN,CASE WHEN a.D_END IS NULL THEN GETDATE() ELSE a.D_END END))

*1.00/count(distinct a.n_aid) as numeric(18,2))>=3

) gpc

group by gpc.dtime

解释:以上脚本是计算游戏数据中,每天活跃玩家数目,活跃玩家定义为:每日累计登录超过3小时的玩家定义为活跃玩家。

知识点:cast(SUM(DATEDIFF(hh,a.D_BEGIN,CASE WHEN a.D_END IS NULL THEN GETDATE() ELSE a.D_END END))*1.00/count(distinct a.n_aid) as numeric(18,2))

1、DATEDIFF(hh,a.D_BEGIN,CASE WHEN a.D_END IS NULL THEN GETDATE() ELSE a.D_END END)

1, DateDiff,函数操作名。表示两个指定日期间的时间间隔数目。

2,datediff 定义

DateDiff(interval, date1, date2【, firstdayofweek【, firstweekofyear】】)

interval 字符串表达式,表示用来计算date1 和 date2 的时间差的时间间隔

Date1□date2 必要;Variant (Date)。计算中要用到的两个日期。

Firstdayofweek 可选。指定一个星期的第一天的常数。如果未予指定,则以星期日为第一天。

firstweekofyear 可选。指定一年的第一周的常数。如果未予指定,则以包含 1 月 1 日的星期为第一周。

3、interval 常用参数设置

datepart 参数可以是下列的值:

datepart缩写
yy, yyyy
季度qq, q
mm, m
年中的日dy, y
dd, d
wk, ww
星期dw, w
小时hh
分钟mi, n
ss, s
毫秒ms
微妙mcs
纳秒ns
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: