1

だから私はPHPからこのクエリを実行しています。ここでは、正確なクエリ文字列をリストで示しています。

SELECT * FROM `pdem_timesheet`.`tblMasterTimesheets` WHERE 
`pdem_timesheet`.`tblMasterTimesheets`.`username` = 'pdem' AND 
`pdem_timesheet`.`tblMasterTimesheets`.`date` >= '2012-05-09' AND 
`pdem_timesheet`.`tblMasterTimesheets`.`date` <= '2012-05-15' ORDER BY
`pdem_timesheet`.`tblMasterTimesheets`.`date` ASC 

それは私には正しいはずです(多かれ少なかれ、私が使用した以前のコードからコピーして動作します)。しかし、クエリを実行すると、結果は空です。

クエリを日付範囲ではなく、1 日だけに変更すると、次のようになります。

SELECT * FROM .... WHERE ...`date` = '2012-06-12' ....

それは問題なく動作し、本来あるべき結果を 1 つ返します。

between キーワードを使用してみました:

SELECT * FROM ... WHERE ...`date` BETWEEN [start] [end]

しかし、それでも何も返されません...

このクエリを取得して結果を返す方法はありますか?

===答え===

あなたが行くとき:

var curr_date = now.getDate();
var curr_month = now.getMonth();
var curr_year = now.getFullYear();

何らかの理由で月 - 1 を返します。したがって、今の月が 6 の場合、now.getMonth() は 5 を返します...クエリに 1 を追加するだけです (これをもっと早く見たかった)

4

3 に答える 3

2

あなたのクエリは私のために働いているようです。

デモを参照してください。

私が持っているクエリは

SELECT * FROM tblMasterTimesheets
WHERE 
username='pdem'
AND
date >= '2012-05-09' AND
date <= '2012-05-15'
ORDER BY date ASC

username私は、タイプvarchardateあり、タイプtimestampまたはタイプであると仮定しdatetimeます。

于 2012-06-18T18:10:02.960 に答える
2

Fahim Parkar と同様に、BETWEEN 構文を使用したクエリの例を次に示します: http://sqlfiddle.com/#!2/0fcb5/4

ユーザー pdem が存在しないようです。

于 2012-06-18T18:12:37.073 に答える
1

次のことを確認してください。

  1. 実際には、指定された基準を使用したときに返されるべき結果があります。構文が正しいことを確認し、DD-MM-YYYYどの月がどの数字であるかを確認してください (5 月は 05、6 月は 06)。
  2. 列のデータ型がdate、一般的な text/varchar 型ではなく、日付型であること。そのように varchar を >= と比較することはできません (少なくとも、希望する方法ではありません。日付型でのみ機能します)。

Fahim が言ったように、あなたのコードは正しいです。問題を引き起こしているのは、テーブル内の何かである必要があります。

于 2012-06-18T18:11:08.677 に答える