选择查询01722 issue with date列



我们有一个问题,我从视图中选择几个列。这个Select查询抛出01722日期列问题。请帮忙解决这个问题。也让我知道为什么它说无效号码。

我的表结构如下。

GRE 1 VARCHAR2 (720 Byte) Y
EMPLOYEE_NUMBER 2 VARCHAR2 (30 Byte) Y
FULL_NAME 3 VARCHAR2 (240 Byte) Y
EMPLOYEE_CATEGORY 4 VARCHAR2 (80 Byte) Y
TERMINATION_DATE 5 DATE Y
LAST_UPDATE_DATE 6 DATE Y
RESIGNATION_NOTIFICATION_DATE 7 DATE Y
WORK_LOCATION 8 VARCHAR2 (30 Byte) Y
WORK_COUNTRY 9 VARCHAR2 (60 Byte) Y
PAYROLL_VENDOR_CODE 10 VARCHAR2 (3 Byte) Y
PTO_PAYOUT_HOURS 11 VARCHAR2 (60 Byte) Y
FLH_PAYOUT_HOURS 12 VARCHAR2 (60 Byte) Y
PAYROLL_COUNTRY 13 VARCHAR2 (80 Byte) Y
SUPERVISOR_NAME 14 VARCHAR2 (240 Byte) Y
SUPERVISOR_EMPLOYEE_NUMBER 15 VARCHAR2 (30 Byte) Y
HR_MANAGER 16 VARCHAR2 (240 Byte) Y
TERMINATION_REASON 17 VARCHAR2 (80 Byte) Y
NORMAL_WORK_HOURS 18 NUMBER (22,3) Y
FLSA 19 VARCHAR2 (10 Byte) Y
CURRENT_PERIOD_PTO_TAKEN 20 NUMBER Y
CURRENT_PERIOD_FH_TAKEN 21 NUMBER Y
JOB_TITLE 22 VARCHAR2 (700 Byte) Y

我尝试了下面的查询。

SELECT * FROM `ALL_EMP_TERM_PAYOUT_V` WHERE trim( TERMINATION_DATE )
<= TO_DATE('03-05-2015','MM-DD-YYYY') and trim( TERMINATION_DATE )>= 
TO_DATE('03-05-2015','MM-DD-YYYY')

如果我只选择几列,我不会得到这个错误。Where as if give select * ...........

不如把你的语句改成:

SELECT * FROM ALL_EMP_TERM_PAYOUT_V 
   WHERE TERMINATION_DATE between TO_DATE('03-05-2015-00:00:00','MM-DD-YYYY-HH24:MI:SS') 
                              and TO_DATE('03-05-2015-23:59:59','MM-DD-YYYY-HH24:MI:SS')

Oracle 'Trim'是一个应该与字符串一起使用的函数,而不是日期。您可能会遇到一些不需要的隐式强制转换。
查看trim函数的文档了解更多细节。

如果这还不能回答您的问题,请添加表创建脚本和视图创建脚本

最新更新