Sql 无效号码ORA-01722

Sql 无效号码ORA-01722,sql,oracle,Sql,Oracle,我的问题是,我总是会遇到这种错误 ORA-01722: invalid number 不管我想做什么都不行。 问题就在这里 SELECT * FROM ( SELECT p.ProjectID, p.CustomName, p.Name FROM projects p INNER JOIN users u

我的问题是,我总是会遇到这种错误

ORA-01722: invalid number
不管我想做什么都不行。 问题就在这里

  SELECT * FROM 
            (
            SELECT p.ProjectID, p.CustomName, p.Name
                FROM projects p
                INNER JOIN 
                    users u
                ON
                    u.UserID =  1
                WHERE 
                    u.User_roleID = 1
            UNION
            SELECT p.ProjectID, p.CustomName, p.Name 
                FROM projects  p
                WHERE 
                    (p.Responsible_person_id = 1 OR p.Delivery_contact = 1) 
                AND 
                    (SYSTIMESTAMP BETWEEN TO_DATE(p.StartDate,'YYYY-MON-DD') AND TO_DATE(p.EndDate,'YYYY-MON-DD'))
                AND 
                    p.status = 2
            UNION
            SELECT rs.ProjectID, pr.CustomName, pr.Name 
                FROM 
                    responsible_persons rs
                LEFT JOIN 
                    projects pr 
                ON 
                    pr.ProjectID = rs.ProjectID
                WHERE 
                    rs.UserID = 1
                AND 
                    (SYSTIMESTAMP BETWEEN TO_DATE(pr.StartDate,'YYYY-MON-DD') AND TO_DATE(pr.EndDate,'YYYY-MON-DD'))
                AND 
                    pr.status = 2
            UNION
            SELECT p.ProjectID, p.CustomName, p.Name 
                FROM project_users_schedule_dates pusd
                LEFT JOIN projects p 
                ON
                    p.ProjectID = pusd.ProjectID
                WHERE pusd.UserID = 1
                AND
                 (SYSTIMESTAMP BETWEEN TO_DATE(pusd.StartDate,'YYYY-MON-DD')
                AND 
                 TO_DATE(pusd.EndDate, 'YYYY-MON-DD'))
                AND
                    p.status = 2) a
       -- GROUP BY a.ProjectID
        ORDER BY a.CustomName, a.ProjectID
因为这里的
StartDate
EndDate
都是
VARCHAR2
我需要转换为\u-date,但我不知道哪里出了问题,我总是出错。 我存储日期的格式是
'YYYY-MM-DD'
我哪里出错了?这里怎么了

负责人id VARCHAR和交付联系人也是VARCHAR

然后将它们与字符串进行比较,而不是与数字进行比较

(p.Responsible_person_id = '1' OR p.Delivery_contact = '1') 
如果将它们与数字进行比较,Oracle会尝试将列值转换为数字,并且错误表明其中至少一列中的所有值都不是正确的数字


如果它们应该包含数字,则应使用
NUMBER
类型定义它们。

切勿在
varchar
列中存储日期(或时间戳)值。什么数据类型是
userid
status
?我知道这是一个大错误,这不是我的失误。我的同事在如何安装Oracle SQL和表时犯了这个错误。我已经解释了这是一个非常非常非常大的错误。更一般地说,你有一个由四个(快速浏览)独立块组成的
联合体
。。。请尝试一次只使用一个查询,以帮助确定是哪一个导致了问题。我存储日期的格式为“YYYY-MM-DD”,但查询使用
“YYYY-MON-DD”