0

我有一个关于 between 和 join table 的问题。我在下面有一个代码:

SELECT t_submissions.badge_id,
       t_submissions.employee_name,
       t_submissions.dept_name,
       t_submissions.ot_date,
       t_submissions.ot_from,
       t_submissions.ot_to,
       t_submissions.remarks,
       t_submissions.submission_by,
       t_acknowledged.acknowledge_by,
       t_approved.approval_by
FROM   t_submissions,
       t_acknowledged,
       t_approved
WHERE  ot_date BETWEEN '01-Mar-2012' AND '30-Mar-2012'
       AND t_submissions.submission_no = t_acknowledged.submission_no
       AND t_submissions.submission_no = t_approved.submission_no;

当我尝试编译此代码时,显示日期为 2012 年 3 月 1 日至 2012 年 3 月 30 日的数据。显示日期为 01-Jun-2012、02-Jul-2012 的示例数据。好吧,我认为我的代码有问题。需要你的建议。请帮忙。:-)

4

2 回答 2

0

您需要将 varchar 转换为日期,然后进行比较。这是一个带有解决方案的类似线程。

mySQL 将 varchar 转换为日期

于 2012-07-23T05:49:59.883 回答
0

正如我在评论中所说,您必须将日期字段的类型转换为date. 比较仅适用于date. 这是你的代码。我试着美化它。
此外,您应该在日期中使用月份的数字表示。

SELECT ts.badge_id, ts.employee_name,
       ts.dept_name, ts.ot_date,
       ts.ot_from, ts.ot_to,
       ts.remarks, ts.submission_by,
       ta.acknowledge_by, tp.approval_by
FROM t_submissions AS ts, t_acknowledged AS ta, t_approved AS tp 
WHERE ot_date BETWEEN '01-03-2012' AND '30-03-2012' 
AND ts.submission_no = ta.submission_no 
AND ts.submission_no = tp.submission_no;
于 2012-07-23T05:55:57.197 回答