您的位置:首页 > 数据库 > Oracle

Oracle数据库 根据时间范围 查询 时间范围内的 年 ,月, 日 以及 一天的24小时 (SQL 语句)

2018-01-05 11:50 447 查看

查询时间范围内对应的年

SELECT
TO_CHAR (
ADD_MONTHS (
TO_DATE ('2013', 'yyyy'),
(ROWNUM - 1) * 12
),
'yyyy'
) AS years
FROM
DUAL CONNECT BY ROWNUM <= MONTHS_BETWEEN (
TO_DATE ('2018', 'yyyy'),
TO_DATE ('2013', 'yyyy')
) / 12 + 1


查询时间范围内对应的月份

SELECT
TO_CHAR (
ADD_MONTHS (
TO_DATE ('2017-10', 'yyyy-MM'),
ROWNUM - 1
),
'yyyy-MM'
) AS months
FROM
DUAL CONNECT BY ROWNUM <= MONTHS_BETWEEN (
TO_DATE ('2018-04', 'yyyy-MM'),
TO_DATE ('2017-10', 'yyyy-MM')
) + 1


查询时间范围内对应的日期

SELECT
TO_CHAR (
TO_DATE ('2017-11-01', 'yyyy-MM-dd') + ROWNUM - 1,
'yyyy-MM-dd'
) AS TIME
FROM
DUAL CONNECT BY ROWNUM <= TRUNC (
TO_DATE ('2017-12-01', 'yyyy-MM-dd') - TO_DATE ('2017-11-01', 'yyyy-MM-dd')
) + 1


查询一天的24 个小时

SELECT
TO_CHAR (
TO_DATE ('2017-01-01', 'yyyy-mm-dd') + (ROWNUM - 1) / 24,
'hh24'
) AS HOUR
FROM
dual CONNECT BY 24 >= ROWNUM


当然 以上的sql语句都是基于Oracle数据库的 ,对于其他的数据库并不是很合适。

查询出一定时间范围内的年 月,日, 主要是为了LEFT JOIN 其他数据时使用的。一般来说 ,在查询报表数据的时候比较实用,接下来会写关于sql server 数据库 根据时间范围 查询 时间范围内的 年 ,月, 日 以及 一天的24小时的SQL 语句
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: