2014-10-10 54 views
0

我知道如何以多種不同格式選擇當年的第一個月的第一天。以下工作正常:'01-JAN-' || TO_CHAR(TO_DATE(SYSDATE),'YYYY')PS查詢中日期範圍內當前年份的第一天

不過,我需要在一個日期範圍內的標準使用1月1日,當年在YTD PSoft查詢:當我使用的標準表達'01-JAN-' || TO_CHAR(TO_DATE(SYSDATE),'YYYY')

WHERE A.effdt BETWEEN (January 1, Current_Year) AND SYSDATE. 

,我得到以下錯誤:

A SQL error occurred. Please consult your system log for details. 
Error in running query because of SQL Error, Code=1858, Message=ORA-01858: 
a non-numeric character was found where a numeric was expected (50,380)` 
+0

歡迎來到Stack Overflow。請儘快閱讀[關於]頁面。當詢問有關SQL的問題時,特別是在日期/時間處理方面,識別您正在使用的DBMS非常重要。由於錯誤中有一個ORA,你可能會使用Oracle。您可能需要爲連接表達式加上小括號,或者您可能需要將結果轉換爲日期值(也許再次TO_DATE?)。 – 2014-10-10 16:25:18

+0

根據輸入,您的問題有兩種解決方案。看到我的答案。 – 2014-10-10 16:50:41

回答

1

你應該NEVER比較LITERALDATE。因爲,Oracle將會執行IMPLICIT轉換。而且,遲早會成爲性能問題。

使用TO_DATE將文字顯式轉換爲日期。

例如,

根據日期值輸入法,

1.如果通過某些程序

BETWEEN TO_DATE('01-01-2014','DD-MM-YYYY') and SYSDATE

2.如果使文字已經有表中的日期值,則使用TRUNC

BETWEEN TRUNC(SYSDATE, 'YYYY') and SYSDATE