0

下面是我的 SQL 查询

请提出一些建议

select p.e_id as Employee_Id, p.ename as Name,p.eadd1 as Address,
 p.eprof as Profession,p.eactive as salary,
 (select count (d.pr_id) from employee_presency d 
 where d.e_id = p.e_id and d.t_date
 between '01-06-2013' and '31-06-2013')
  as presency,(select sum(c.payment) from emp_payment c 
  where c.e_id = p.e_id and c.pay_date
   between'01-06-2013'
   and '31-06-2013' ) as Salary  from  Employee p
4

2 回答 2

2

您没有提供足够的信息来确定。但是大多数 dbms 都有默认的日期格式,如果这与您使用的格式不同,您会收到某种错误消息。

例如,在Oracle中,您可能会使用类似to_date('31-06-2013', 'dd-mm-yyyy'). (Oracle 日期格式代码

另一种可能性是“t_date”和“pay_date”列中的一个或多个被声明为 char(n) 或 varchar(n) 而不是被声明为“date”,并且它们包含一些无法表示为有效的数据日期。varchar() 列可能包含类似“31-06-2@1#”或“wibble”的值。

于 2013-06-23T11:40:12.963 回答
0

也许您的数据库认为没有第 31 个月。

考虑使用yyyy-mm-dd不存在日期与月份问题的日期表示法。例如:

'2013-06-31'
于 2013-06-23T11:40:21.527 回答