用户输入查询

时间:2015-04-06 20:46:14

标签: sql oracle sqlplus

我对此查询存在一些问题。 我正在尝试创建一个查询,用户可以在运行时输入2个日期。它要求我提供输入,包括开始日期和结束状态,但是,然后它会出现:ORA-00904: "JAN": invalid identifier

我的查询目前是:

SELECT p.FirstName, p.email, a.Avatar_Name, s.Species_Name, a.Avatar_Level, a.Skill, s.Wisdom_Level, a.AvA_DOB, a.Hoard
    FROM Players P, Avatars A, Species S
    WHERE a.Player_ID = p.Player_ID
    AND a.Species_ID = s.Species_ID
    AND Avatar_Level = 'Master'
    AND AvA_DOB BETWEEN &startdate AND &enddate
    ORDER BY Hoard DESC;

我希望用户能够在用户输入的两个日期之间找到一个头像列表。 有什么帮助吗?如果需要更多信息,请询问! (: (SQL PLUS)

1 个答案:

答案 0 :(得分:1)

SQL中的日期值需要用单引号括起来。 Oracle会将这些字符串转换为日期数据类型,但使用具有预期格式掩码的显式转换会更安全。

SELECT p.FirstName, p.email, a.Avatar_Name, s.Species_Name, a.Avatar_Level, a.Skill, s.Wisdom_Level, a.AvA_DOB, a.Hoard
    FROM Players P, Avatars A, Species S
    WHERE a.Player_ID = p.Player_ID
    AND a.Species_ID = s.Species_ID
    AND Avatar_Level = 'Master'
    AND AvA_DOB BETWEEN to_date('&startdate', 'dd-mmm-yyyy') 
                AND to_date('&enddate', 'dd-mmm-yyyy')
    ORDER BY Hoard DESC;