oracle 如何获取时间范围是上个月,但时间是数字数据类型?

wztqucjr  于 2022-11-03  发布在  Oracle
关注(0)|答案(2)|浏览(124)

关于前一个问题,我问,我学会了如何在sql中获取上个月的数据,这里是我的代码:

EXTRACT(month FROM CURRENT_DATE)-1 = EXTRACT(month FROM LOG_DTM) and 
EXTRACT(year FROM CU RRENT_DATE) = EXTRACT(year FROM LOG_DTM)

但是,如果将LOG_DTM的数据类型更改为数字,而不是时间,那么现在LOG_DTM是日期,而LOG_DTM_ID是基于LOG_DTM的数字
例如,如果日期是2022-09-30,那么LOG_DTM = '2022-09-30',但是LOG_DTM_ID是一系列的数字20220930。我的代码不再工作了。
我试着把它添加到_number()中,但是似乎不起作用。有什么建议和想法吗?谢谢大家

rta7y2nd

rta7y2nd1#

如果LOG_DTM的数据类型改为数字,...
...然后将其转换为有效的DATE数据类型值(使用to_date,而不是to_number来执行此操作;当然,使用适当格式模型):

extract(month from current_date) - 1 = extract(month from to_date(log_dtm, 'yyyymmdd'))
gxwragnw

gxwragnw2#

要将NUMBER转换为DATE,可以使用TO_DATE函数:

EXTRACT(month FROM CURRENT_DATE)-1 = EXTRACT(month FROM to_date(LOG_DTM,'yyyy-mm-dd')) and 
EXTRACT(year FROM CURRENT_DATE) = EXTRACT(year FROM to_date(LOG_DTM,'yyyy-mm-dd'))

相关问题