关于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 参数可以是下列的值:
脚本:
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 |
相关文章推荐
- JS学习笔记(五):关于$(function(){});里面的函数不执行问题
- 关于SQL Server 2005的学习笔记―分析函数
- 2.关于结构体以及结构体数组作为函数入口参数的方法(学习笔记)
- 关于函数调用约定的学习笔记
- 【C++】【学习笔记】【未成功实现】关于指针的函数【very difficult】
- JavaScript 学习笔记(1):关于函数、对象以及面向对象
- C/C++中关于地址、指针和引用变量的学习笔记(四) : 函数
- 【学习笔记】自定义关于wchar_t*的相关函数
- SIPP 代码学习笔记3- 关于函数
- cocos2d-x 3.1.1 学习笔记[17] 关于函数的那些勾当
- 关于SQLServer2005的学习笔记——分析函数
- Node.js学习笔记(3)——关于回调函数和函数的回调
- 关于SQLServer2005的学习笔记——分析函数
- Lua中关于函数库基本操作学习笔记
- 关于SQL Server 2005的学习笔记—分析函数
- sqlserver -- 学习笔记(五)查询一天、一周、一个月记录(DateDiff 函数)(备忘)
- 关于SQLServer2005的学习笔记——生日问题
- scala学习笔记:无参函数
- (原创)c#学习笔记06--函数02--变量的作用域02--参数和返回值与全局数据
- python学习笔记之函数