0

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 日の日付のデータの例を示します。さて、私のコードに何か問題があると思います。あなたの提案が必要です。助けてください。:-)

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 に答える