PS查询中日期范围标准的当年第一天

时间:2014-10-10 15:40:46

标签: sql oracle date

我知道如何以多种不同的格式选择当年第一个月的第一天。以下工作正常:'01-JAN-' || TO_CHAR(TO_DATE(SYSDATE),'YYYY')

但是,我需要在YTD PSoft查询的日期范围标准中使用当年的1月1日:

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

当我在条件中使用表达式'01-JAN-' || TO_CHAR(TO_DATE(SYSDATE),'YYYY')时,出现以下错误:

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)`

1 个答案:

答案 0 :(得分:1)

您应该从不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