我有一个字段date-year,格式为datetime64 [ns]。
如何在where子句中使用此字段来获取滚动12个月的数据(过去12个月的数据)。
下面的查询不起作用,但是我希望可以过滤12个月的数据。
select * from ABCD.DEFG_TABLE where monthyear > '2019-01-01'
仅供参考-这是一个oracle数据库。如果我可以避免对值2019-01-01进行硬编码,那就太好了!
答案 0 :(得分:1)
您需要使用datetime并按如下所示设置日期格式。
只需获取您的相对日期,如果您将日期时间格式设为YYYYMMDD,则使用日期时间中的strftime,并将正则表达式字符串设为(“%Y%m%d”)
import datetime
import pandas
from dateutil.relativedelta import relativedelta
query = "SELECT * FROM ng_scott.Emp"
between_first = datetime.date.today()
between_second = between_first - relativedelta(years=1)
# GET THE DATASET
dataset = pd.read_sql(query , con=engine)
# PARSE THE DATASET
filtered_dataset = dataset[(dataset['DOJ'] > between_first ) & (dataset['DOJ'] > between_second )]
print(filtered_dataset)
答案 1 :(得分:0)
您可以使用纯SQL做到这一点。
以下表达式动态计算1年前几个月的开始时间:
add_months(trunc(sysdate, 'month'), -12)
这句话是:以当月第一天的日期为准,并从中撤回12个月。
您可以将其用作过滤条件:
select * from ABCD.DEFG_TABLE where monthyear > add_months(trunc(sysdate, 'month'), -12)
NB:这假设monthyear
的数据类型为date
。