Oracle查询去年1月1日到去年今天的数据
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Oracle查询去年1月1日到去年今天的数据相关的知识,希望对你有一定的参考价值。
Oracle怎么查询从去年1月1日到去年今天这个时间段里的数据?求各位大佬搭救
要求是动态的,比如今天是查2017.1.1到2017.8.31的,明天就要改成2017.1.1到2017.9.1的了
ADD_MONTHS(sysdate,-12) 去年今天
ADD_MONTHS(trunc(sysdate,'yyyy') ,-12)去年第一天
where DATE>=ADD_MONTHS(trunc(sysdate,'yyyy') ,-12) and date<=ADD_MONTHS(sysdate,-12)
或者 where date between ADD_MONTHS(trunc(sysdate,'yyyy') ,-12) and ADD_MONTHS(sysdate,-12) 参考技术A 像楼上老铁说的,条件里加个时间就行了啊,比如 where date between '20170101' and '20180831'
你要动态的话,就获取系统时间,当前系统时间和当前系统时间减去一年,不就是近一年的咯追问
大佬,是去年1月1日到去年今天,不是去年今天到今天,我的表达有问题,求大佬再想想办法,感谢!
参考技术B 2017-01-01可以定死,然后加个sysdate当天,那样就可以动态的.where DATE>='2017-01-01' and date<=sysdate
如果你的date有时间,可以用to_days()函数去转换成你的格式追问
两个问题大佬
第一,2017-1-1不能定死,因为会跨年····
第二,是到去年今天,不是今天。
求大佬,再想想有没有招
哦,题目看错不好意思
那也简单首先去年的今天,用函数ADD_MONTHS (sysdate, -12),就能获取,
然后去年第一天first_day(add_months(sysdate,-12)),
trunc(add_months(sysdate,-12),'year')
大佬,报错,First_Day标识符无效,数据库是Oracle,以下是我写的SQL,看看是不是我哪里写错了啊?
SELECT COUNT(*)
FROM SITE_INFO T
WHERE CREATE_TIME >= FIRST_DAY(ADD_MONTHS(SYSDATE,-12))
AND CREATE_TIME <= ADD_MONTHS (SYSDATE, -12)
SELECT COUNT(*)
FROM SITE_INFO T
WHERE CREATE_TIME >= trunc(add_months(sysdate,-12),'year')
AND CREATE_TIME <= ADD_MONTHS (SYSDATE, -12)
用另一个吧
Java8中LocalDate获取时间字符yyyy-MM-dd昨天今天明天上个月下个月去年明年的时间字符
//昨天
String yesterdayStr = LocalDate.now().minusDays(1).atStartOfDay().atZone(ZoneId.systemDefault()).format(DateTimeFormatter.ofPattern("yyyy-MM-dd"));
System.out.println("yesterdayStr = " + yesterdayStr);
//今天
String todayStr = LocalDate.now().atStartOfDay().atZone(ZoneId.systemDefault()).format(DateTimeFormatter.ofPattern("yyyy-MM-dd"));
System.out.println("todayStr = " + todayStr);
//明天
String tomorrowStr = LocalDate.now().plusDays(1).atStartOfDay().atZone(ZoneId.systemDefault()).format(DateTimeFormatter.ofPattern("yyyy-MM-dd"));
System.out.println("tomorrowStr = " + tomorrowStr);
//上个月
String lastMonthStr = LocalDate.now().minusMonths(1).atStartOfDay().atZone(ZoneId.systemDefault()).format(DateTimeFormatter.ofPattern("yyyy-MM-dd"));
System.out.println("lastMonthStr = " + lastMonthStr);
//下个月
String nextMonthStr = LocalDate.now().plusMonths(1).atStartOfDay().atZone(ZoneId.systemDefault()).format(DateTimeFormatter.ofPattern("yyyy-MM-dd"));
System.out.println("nextMonthStr = " + nextMonthStr);
//去年
String lastYearStr = LocalDate.now().minusYears(1).atStartOfDay().atZone(ZoneId.systemDefault()).format(DateTimeFormatter.ofPattern("yyyy-MM-dd"));
System.out.println("lastYearStr = " + lastYearStr);
//明年
String nextYearStr = LocalDate.now().plusYears(1).atStartOfDay().atZone(ZoneId.systemDefault()).format(DateTimeFormatter.ofPattern("yyyy-MM-dd"));
System.out.println("nextYearStr = " + nextYearStr);
运行后效果图片
以上是关于Oracle查询去年1月1日到去年今天的数据的主要内容,如果未能解决你的问题,请参考以下文章
SQL Server 从数据库中查询去年的今天的数据的sql语句
Oracle 解决存储过程包中,kill session的权限问题
Toad For Oracle:未声明绑定变量“End_Year”