0

私はMYSQLで次のようなテーブルを持っています:

proj_id|hoursWorked|Date.  

日付フィールドのタイプはDate; Java ベースの Web アプリケーションで、プロジェクトの特定の週番号に応じて、テーブルからすべてのエントリを取得したいと考えています。これを達成するのを手伝ってください。

それを可能にする単一のクエリを書くことができません。

4

3 に答える 3

5

次のようなものは使用しないでくださいWHERE WEEK(column)=something- これはパフォーマンス キラーです。一致しない場合でも、すべての行の週番号を計算します。それに加えて、この列でインデックスを使用できなくなります。

代わりに、データ型に応じて、絶対的な開始日と終了日または時点を計算してから、 を使用しますBETWEEN。これにより、一致しない行に対して計算が行われず、インデックスの使用が許可されます。

経験則: 定数の計算とフィールドの計算のどちらかを選択できる場合は、前者を使用してください。

于 2012-12-25T11:55:07.780 に答える
2

WEEKを使用

select * from your_table
where week(`Date`) = week('2012-12-01')

今週のレコードのみを取得したい場合は、次のことができます

select * from your_table
where week(`Date`) = week(curdate())
于 2012-12-25T11:45:43.640 に答える
2

MySQLWEEK()関数を使用します。

SELECT WEEK(dateColumn)
FROM...
WHERE WEEK(dateColumn) = 1

MySQL ドキュメントから

この関数は、日付の週番号を返します。WEEK() の 2 つの引数形式を使用すると、週の開始日を日曜日にするか月曜日にするか、および戻り値の範囲を 0 から 53 にするか 1 から 53 にするかを指定できます。

于 2012-12-25T11:46:31.957 に答える