SQLServer、Oracle获取当前年份的1月到当前月之间的所有月份
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SQLServer、Oracle获取当前年份的1月到当前月之间的所有月份相关的知识,希望对你有一定的参考价值。
如:2018-01(当前年份的1月)、2018-02、2018-03、 2018-04、 2018-05、 2018-06、 2018-07、2018-08(当前月)
提示:请不要从网上乱复制粘贴,谢谢!
请用SQLServer、Oracle两种数据库的写法获取当前年份的1月到当前月之间的所有月份。如:得到这样的结果:2018-01(当前年份的1月)、2018-02、2018-03、 2018-04、 2018-05、 2018-06、 2018-07、2018-08(当前月)。
sqlserver:
from
(select number from master..spt_values where type=\'P\') t
where year(dateadd(mm,-t.number,getdate()))=year(getdate())
order by convert(varchar(7),dateadd(mm,-t.number,getdate()),120)
oracle:
select to_char(add_months(sysdate, -t.rn), \'yyyy-mm\')from dual a, (select rownum - 1 rn from dual connect by rownum <= 12) t
where to_char(add_months(sysdate, -t.rn), \'yyyy\') =
to_char(sysdate, \'yyyy\')
order by to_char(add_months(sysdate, -t.rn), \'yyyy-mm\') 参考技术A
SQLServer版的写法:
SELECT left(convert(varchar(10),DATEADD(mm,DATEDIFF(mm,0,getdate()),0),120),7)YD into #YD
declare @Y int
set @Y=1
while @Y<DATEPART(month, GETDATE())
begin
insert #YD
select Left(convert(varchar(10),dateadd(month,-@Y,GETDATE()),120),7)
set @Y=@Y+1
end
select * from #YD order by YD
参考技术B mysql> select DATE_FORMAT('1997-10-04 22:23:00', '%Y/%m ');+----------------------------------------------+
| DATE_FORMAT('1997-10-04 22:23:00', '%Y/%m ') |
+----------------------------------------------+
| 1997/10 |
+----------------------------------------------+
Oracle 日期操作
1.查询当前年、月、周相关时间
1.1.查询当前年份
SELECT TO_CHAR(SYSDATE,‘YYYY‘) AS YEAR FROM DUAL--查询当前年份 SELECT TO_CHAR(SYSDATE,‘YYY‘) AS YEAR FROM DUAL--查询当前年份后两位 SELECT TO_CHAR(SYSDATE,‘YY‘) AS YEAR FROM DUAL--查询当前年份最后两位 SELECT TO_CHAR(SYSDATE,‘Y‘) AS YEAR FROM DUAL--查询当前年份最后一位
1.2.查询当前年份第几天
SELECT TO_CHAR(SYSDATE,‘DDD‘) AS DAYS FROM DUAL
1.3.查询当前月份第几天
SELECT TO_CHAR(SYSDATE,‘DD‘) AS DAYS FROM DUAL
1.4.查询当前周的星期几
SELECT TO_CHAR(SYSDATE,‘dy‘) AS WEEK FROM DUAL SELECT TO_CHAR(SYSDATE,‘day‘) AS WEEK FROM DUAL
2.查询当前第几季度
SELECT TO_CHAR(SYSDATE,‘Q‘) AS JD FROM DUAL
3.查询当前在一年内是第几周
SELECT TO_CHAR(SYSDATE,‘IW‘) AS WEEKNUM FROM DUAL SELECT TO_CHAR(SYSDATE,‘WW‘) AS WEEKNUM FROM DUAL SELECT TO_CHAR(SYSDATE,‘W‘) AS WEEKNUM FROM DUAL
4.查询当前某年某月有多少天
SELECT TO_CHAR(last_day(to_date(‘2019/02/01‘,‘YYYY/MM/DD‘)),‘DD‘) AS MONTH_DAYS_NUMBER FROM DUAL
5.查询当前的日期格式
SELECT TO_CHAR(SYSDATE,‘YYYY/MM/DD‘) AS MONTH FROM DUAL--获取当前日期的‘YYYY/MM/DD‘格式:2020/01/02 SELECT TO_CHAR(SYSDATE,‘YYYYMMDD‘) AS MONTH FROM DUAL--获取当前日期的‘YYYYMMDD‘格式:20200102 SELECT TO_CHAR(SYSDATE,‘YYYYMMDD HH:MI:SS‘) AS now FROM DUAL--获取当前时间,精确到秒的12小时制格式:20200102 03:18:25 SELECT TO_CHAR(SYSDATE,‘YYYYMMDD HH24:MI:SS‘) AS now FROM DUAL--获取当前时间,精确到秒24小时制的格式:20200102 15:18:13 SELECT TO_CHAR(SYSDATE,‘YYYY/MM/DD HH24:MI:SS:PM:DY‘) AS now FROM DUAL--获取当前时间的格式,显示上、下午和星期几:2020/01/02 15:17:59:下午:星期四
6.查询距离当前时间一段时间间隔的时间,当前时间之前用“-”当前时间之后用“+”
SELECT TO_CHAR(SYSDATE, ‘YYYY/MM/DD HH24:MI:SS‘) AS NOW,TO_CHAR(SYSDATE - INTERVAL ‘7‘ second,‘YYYY/MM/DD HH24:MI:SS‘) AS PAST FROM DUAL --查询当前时间的7秒前时间 SELECT TO_CHAR(SYSDATE, ‘YYYY/MM/DD HH24:MI:SS‘) AS NOW,TO_CHAR(SYSDATE - INTERVAL ‘7‘ minute,‘YYYY/MM/DD HH24:MI:SS‘) AS PAST FROM DUAL --查询当前时间的7分钟前时间 SELECT TO_CHAR(SYSDATE, ‘YYYY/MM/DD HH24:MI:SS‘) AS NOW,TO_CHAR(SYSDATE - INTERVAL ‘7‘hour ,‘YYYY/MM/DD HH24:MI:SS‘) AS PAST FROM DUAL --查询当前时间的7小时前时间 SELECT TO_CHAR(SYSDATE, ‘YYYY/MM/DD HH24:MI:SS‘) AS NOW,TO_CHAR(SYSDATE - INTERVAL ‘7‘day ,‘YYYY/MM/DD HH24:MI:SS‘) AS PAST FROM DUAL --查询当前时间的7天前时间 SELECT TO_CHAR(SYSDATE, ‘YYYY/MM/DD HH24:MI:SS‘) AS NOW,TO_CHAR(SYSDATE - INTERVAL ‘7‘month ,‘YYYY/MM/DD HH24:MI:SS‘) AS PAST FROM DUAL --查询当前时间的7月前时间 SELECT TO_CHAR(SYSDATE, ‘YYYY/MM/DD HH24:MI:SS‘) AS NOW,TO_CHAR(SYSDATE - INTERVAL ‘7‘year ,‘YYYY/MM/DD HH24:MI:SS‘) AS PAST FROM DUAL --查询当前时间的7年前时间 SELECT TO_CHAR(SYSDATE, ‘YYYY/MM/DD HH24:MI:SS‘) AS NOW,TO_CHAR(SYSDATE - 8*INTERVAL ‘7‘hour ,‘YYYY/MM/DD HH24:MI:SS‘) AS PAST FROM DUAL --查询当前时间参数年、月、日、时、分、秒乘以一个数字倍数之前的时间
以上是关于SQLServer、Oracle获取当前年份的1月到当前月之间的所有月份的主要内容,如果未能解决你的问题,请参考以下文章