SELECT colomn
FROM table
WHERE date > (SELECT add_months(from_unixtime(unix_timestamp()),-2));
或者您可以使用:
SELECT colomn
FROM table
WHERE date > to_date(SELECT year(add_months(from_unixtime(unix_timestamp()),-2))+month(add_months(from_unixtime(unix_timestamp()),-2)));
与regex和substring结合使用:
SELECT colomn
FROM table
where sampledate>=substr(regexp_replace(add_months(from_unixtime(unix_timestamp()),-2), '-',''),1,6)
如果要避免转换整数,请在 YYYYMM 格式,往返日期,你可以用数学和 CASE 声明。。。 例如 YYYYMM % 100 会给你 MM . 然后你可以检查它是2还是更少。如果是2或更少,扣除100以减少一年,再加上12以得到13或14个月。那么,扣除2就能得到正确答案。 如果你重新安排的话,你会明白的 YYYYMM - 2 + (88, if the month is 1 or 2) ``` sampledate <= YYYYMM - 2 + CASE WHEN YYYYMM % 100 <= 2 THEN 88 ELSE 0 END
public Date nMonthsFromDate(Date date, int interval) {
Calendar cal = Calendar.getInstance();
cal.setTime(date);
// E.G. to get 2 months ago, add -2
cal.add(Calendar.MONTH, interval);
Date result = cal.getTime();
return result;
}
3条答案
按热度按时间nzk0hqpo1#
你能试试这个吗:
或者您可以使用:
与regex和substring结合使用:
得到一个yyyymm日期
fiei3ece2#
如果要避免转换整数,请在
YYYYMM
格式,往返日期,你可以用数学和CASE
声明。。。例如
YYYYMM % 100
会给你MM
. 然后你可以检查它是2还是更少。如果是2或更少,扣除100以减少一年,再加上12以得到13或14个月。那么,扣除2就能得到正确答案。如果你重新安排的话,你会明白的
YYYYMM - 2 + (88, if the month is 1 or 2)
```sampledate <= YYYYMM - 2 + CASE WHEN YYYYMM % 100 <= 2 THEN 88 ELSE 0 END
year( ADD_MONTHS(from_unixtime(unix_timestamp()), -2) )*100
+
month( ADD_MONTHS(from_unixtime(unix_timestamp()), -2) )
c2e8gylq3#
试试这样的。首先,获取未来/过去n个月的日期的实用程序:
查询实体的条件,这里是成员:
最后,注意不要将日期[java.util.date]与时间戳[util.sql.date]进行比较。由于java中的一个怪癖,对于等价日期,date.equals(timestamp)返回true,而timestamp.equals(date)返回false。要使两个日期都与java.util.date一致,请执行以下操作: