如何从oracle sql中的最大日期获取年份

问题描述

我试图从下面的查询中得到 yyyy 如果我尝试使用它会抛出错误

查询

WITH last_startdate
     AS (SELECT owner,package_name,Max(start_date) MAX_START_DATE,to_date(max(start_date),'YYYY') as max_start_date_yr
         FROM   (SELECT DISTINCT owner,object_name AS PACKAGE_NAME
                 FROM   dba_procedures

                ) P
                JOIN SCHEMA.table_name A /*AUDITING TABLE*/
                  ON P.package_name = A.task_name
         GROUP  BY P.owner,P.package_name)
SELECT *
FROM   last_startdate
ORDER  BY 3 DESC 

错误

ORA-01830: date format picture ends before converting entire input string
01830. 00000 -  "date format picture ends before converting entire input string"
*Cause:    
*Action:

预期结果

OWNER PACKAGE_NAME MAX_START_DATE MAX_START_DATE_YR
STAGE PA_AB_CDS    19.02.2021     2021
EDW   PA_BX_BCS    09.12.2020     2020
MART  PA_WQ_AFD    12.08.2019     2019
CODE  PA_WQ_IOD    23.05.2016     2016

对于获得预期结果的任何建议?

解决方法

start_date 是一个 DATE 我想。所以 max(start_date) 也是一个日期。

那你为什么要在上面应用 to_date?将日期转换为日期?这是没有意义的。你我想要to_char而不是

to_char(max(start_date),'YYYY') as max_start_date_yr

这会给你一个字符串中的年份。或者只是使用 EXTRACT 来获取数字年份:

extract(year from max(start_date)) as max_start_date_yr

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...