簡體   English   中英

如何從 oracle sql 中的最大日期獲取年份

[英]how to get the year from the max date in 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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM