日期之间的PHP与请求的不匹配

时间:2012-07-23 05:46:11

标签: php sql date between

我有关于between和join表的问题。 我的代码如下:

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日。日期为2012年6月1日,2012年7月2日的示例数据,显示。 好吧,我认为我的代码存在问题。需要你的建议。请帮忙。 : - )

2 个答案:

答案 0 :(得分:0)

您需要将varchar转换为date,然后进行比较。这是一个类似的解决方案。

mySQL convert varchar to date

答案 1 :(得分: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;