ORACLE时间查询参考
- ORACLE时间查询参考
- 1.查询当天新增用户数
- 2.查询昨日新增用户数
- 3.查询月活信息(每日去重累记)
- 4.查询月活信息(每月去重)
- 5.查询日活信息(去重)
- 6.按时间范围查询
- 7.查询最新一条记录
- 8.条件查询
- 9.查询最近一周某个时间段内的数据
- 10.查询某段日期内某个时间段的数据
- 10.取得当前日期是本月的第几周
- 11.取得当前日期是一个星期中的第几天,注意星期日是第一天
- 12.取当前日期是星期几中文显示
- 13.得到当前的日期
- 14.得到当天凌晨0点0分0秒的日期
- 15.得到这天的最后一秒
- 16.得到小时的具体数值
- 17.本月一日的日期
- 18.得到下月一日的日期
- 19.返回当前月的最后一天
- 20.得到一年的每一天
- 21.今天是今年的第N天
- 22.如何在给现有的日期加上2年
- 23.判断某一日子所在年分是否为润年
- 24.判断两年后是否为润年
- 25.得到日期的季度
ORACLE时间查询参考
1.查询当天新增用户数
SELECT count(*) AS YTD_ICM
FROM WS.USER
WHERE to_char(CREATE_DATE,‘dd’)=to_char(sysdate,‘dd’)
2.查询昨日新增用户数
SELECT count(*) AS YTD_ICM
FROM WS.USER
WHERE to_char(CREATE_DATE,‘dd’)=to_char(sysdate-1,‘dd’)
3.查询月活信息(每日去重累记)
SELECT count(*) AS MON_ACT
FROM
(SELECT DISTINCT to_char(CREATE_DATE,‘yyyy-MM-dd’) AS DATA , MOBILE
FROM WS.LOGIN_RD
WHERE to_char(CREATE_DATE,‘mm’)=to_char(sysdate,‘mm’))
4.查询月活信息(每月去重)
SELECT count(DISTINCT MOBILE)
AS MON_ACT
FROM WS.SY_LOGIN_RD
WHERE to_char(CREATE_DATE,‘mm’)=to_char(sysdate,‘mm’)
5.查询日活信息(去重)
SELECT count(DISTINCT MOBILE)
AS DAY_ACT
FROM
WS.LOGIN_RD
WHERE to_char(CREATE_DATE,‘dd’)=to_char(sysdate,‘dd’)
6.按时间范围查询
SELECT TOTAL_USER,YTD_ICM,MON_ACT,DAY_ACT,STA_DAT
FROM
WS.DATA_STA
WHERE
STA_DAT>=TO_TIMESTAMP(TO_CHAR(#{EXP_STA_DAT},‘yyyy-MM-dd’),‘yyyy-MM-dd
hh24:mi:ss’)
AND STA_DAT < (TO_TIMESTAMP(TO_CHAR(#{EXP_END_DAT},‘yyyy-MM-dd’),‘yyyy-MM-dd
hh24:mi:ss’)+1)
7.查询最新一条记录
SELECT
TOTAL_USER,YTD_ICM,MON_ACT,DAY_ACT,STA_DAT
FROM
(SELECT * FROM WS.DATA_STA
ORDER BY STA_DAT DESC)
WHERE ROWNUM=1
8.条件查询
SELECT TSK_NUM,TSK_NAM,TSK_DAT,LAT_STATE_DATE,TSK_STA
FROM WS.APP
WHERE 1=1
AND
TSK_STA=#{TSK_STA}
AND
LAT_STATE_DATE>=TO_TIMESTAMP(TO_CHAR(#{STA_TIM},‘yyyy-MM-dd’),‘yyyy-MM-dd
hh24:mi:ss’)
AND LAT_STATE_DATE
< (TO_TIMESTAMP(TO_CHAR(#{END_TIM},‘yyyy-MM-dd’),‘yyyy-MM-dd
hh24:mi:ss’)+1)
ORDER BY
LAT_STATE_DATE DESC
9.查询最近一周某个时间段内的数据
SELECT *
FROM WS.DATA_STA
O
WHERE O.STA_DAT
BETWEEN
SYSDATE-7
AND SYSDATE
AND TO_CHAR(O.STA_DAT, ‘hh24:mi:ss’)
BETWEEN ‘00:00:00’ AND ‘19:00:00’
10.查询某段日期内某个时间段的数据
SELECT *
FROM WS.DATA_STA
O
WHERE
O.STA_DAT BETWEEN
TO_DATE(‘2018-07-26 00:30’, ‘yyyy-mm-dd hh24:mi’)
AND TO_DATE(‘2018-07-26
13:00’, ‘yyyy-mm-dd
hh24:mi’)
AND TO_CHAR(O.STA_DAT, ‘hh24:mi:ss’)
BETWEEN ‘00:00:00’ AND ‘19:00:00’
10.取得当前日期是本月的第几周
select to_char(sysdate,‘YYYYMMDD W
HH24:MI:SS’) from dual
select to_char(sysdate,‘W’) from dual
11.取得当前日期是一个星期中的第几天,注意星期日是第一天
select sysdate,to_char(sysdate,‘D’) from dual
其他扩展:
select to_char(sysdate,‘yyyy’) from dual
select to_char(sysdate,‘Q’) from dual
select to_char(sysdate,‘mm’) from dual
select to_char(sysdate,‘dd’) from dual
ddd 年中的第几天 WW 年中的第几个星期 W该月中第几个星期DAY 周中的星期几
D 今天对映的NUMBER ‘1’,‘星期日’, ‘2’,‘星期一’, ‘3’,‘星期二’, ‘4’,‘星期三’, ‘5’,‘星期四’, ‘6’,‘星期五’, ‘7’,‘星期六’
hh 小时(12) hh24小时(24) Mi分 ss秒
12.取当前日期是星期几中文显示
select to_char(sysdate,‘day’)
from
dual
13.得到当前的日期
select sysdate from dual
14.得到当天凌晨0点0分0秒的日期
select trunc(sysdate) from dual
15.得到这天的最后一秒
select trunc(sysdate) + 0.99999 from dual
16.得到小时的具体数值
select trunc(sysdate) + 2/24 from dual
select trunc(sysdate) + 7/24 from dual
17.本月一日的日期
select trunc(sysdate,‘mm’) from dual;
18.得到下月一日的日期
select trunc(add_months(sysdate,1),‘mm’) from dual;
19.返回当前月的最后一天
select last_day(sysdate) from dual;
select last_day(trunc(sysdate)) from dual;
select trunc(last_day(sysdate)) from dual;
select trunc(add_months(sysdate,1),‘mm’) - 1 from dual;
20.得到一年的每一天
select trunc(sysdate,‘yyyy’)+ rn -1 date0
from
(select rownum
rn from all_objects
where
rownum<366);
21.今天是今年的第N天
SELECT TO_CHAR(SYSDATE,‘DDD’) FROM DUAL
22.如何在给现有的日期加上2年
select add_months(sysdate,24) from dual;
23.判断某一日子所在年分是否为润年
select decode(to_char(last_day(trunc(sysdate,‘y’)+31),‘dd’),‘29’,‘闰年’,‘平年’) from dual;
24.判断两年后是否为润年
select decode(to_char(last_day(trunc(add_months(sysdate,24),‘y’)+31),‘dd’),‘29’,‘闰年’,‘平年’) from dual;
25.得到日期的季度
select ceil(to_number(to_char(sysdate,‘mm’))/3) from dual;
select to_char(sysdate, ‘Q’) from dual