2013-11-21 12 views
17

おやすみなさい。MySQL:今週のレコードの選択方法は?

私はsqlfiddle上の構造を持つテーブルtempを持っている:

id(int 11 primary key) 
name(varchar 100) 
name2(varchar 100) 
date(datetime) 

今2013年11月21日は、私が(2013年11月24日に2013年11月18日上のすべての行をご希望の場合、私は、今週にレコードを取得する例をしたいと思います週)

は、今私は、次のアルゴリズムを参照してください。

1) obtain weekday 
2) calculate how many days ago was Monday 
3) calculate the date Monday 
4) calculate future date Sunday 
5) make a request on date 

は私にしてください知らせる、好ましくはクエリのMySQLでの短いアルゴリズムを()が存在しているのですか?

ADD質問:なぜit query日2013年11月17日(日曜日)にレコードを選択 - 2013年11月23日(土)とどのように日付2013年11月18日(月曜日)上のレコードを取得 - 2013年11月24日(日曜日)?

クエリ:

select * from temp 
where yearweek(`date`) = yearweek(curdate()) 

ありがとう!

+0

??? – NoobEditor

+1

@Mayankあなたは見ない?私はアルゴリズムの発見を書く。アルゴリズムを使ってcoeを書くか? –

+0

@ YourCommonSenseなぜあなたはタグmysqliをお願いしますか教えてください。 –

答えて

42

使用YEARWEEK():このよう日、週、月の使用のレコードを選択するための

SELECT * 
FROM your_table 
WHERE YEARWEEK(`date`, 1) = YEARWEEK(CURDATE(), 1) 
+1

何が最高です? WEEKOFYEARか年中? –

+2

を 'yearweek()'とすると、週の開始日に追加パラメータを指定することができます。 –

+1

日付17.11.2013(日曜日) - 23.11.2013(土曜日)と、18.11.2013の日付(月曜日) - 24.11.2013(日曜日)のレコードを取得する理由を教えてください。 –

6
SELECT id, name, date 
FROM table 
WHERE YEARWEEK(date)=YEARWEEK(NOW()); 
+1

何がベストですか? WEEKOFYEARか年中? –

+5

YEARWEEKを使用してください。あなたがWEEKOFYEARを使用する場合は、過去の年の記録も取得します。私のansを編集しました。 – Ramesh

0

function my_func($time, $your_date) { 
if ($time == 'today') { 
    $timeSQL = ' Date($your_date)= CURDATE()'; 
} 
if ($time == 'week') { 
    $timeSQL = ' YEARWEEK($your_date)= YEARWEEK(CURDATE())'; 
} 
if ($time == 'month') { 
    $timeSQL = ' Year($your_date)=Year(CURDATE()) AND Month(`your_date`)= Month(CURDATE())'; 
} 

$Sql = "SELECT * FROM your_table WHERE ".$timeSQL 
return $Result = $this->db->query($Sql)->result_array(); 
} 
0

あなたは方法

SELECT DATE_FORMAT("2017-06-15", "%U"); 
に従うことによってそれを行うことができます

週の取得(0から0〜53) (日曜日の第1日と月曜日の最後の曜日)

あなたにとって役に立つかもしれません。

例:あなたが何かをしようとした

SELECT DISTINCT DATE_FORMAT('dates', '%U') AS weekdays FROM table_name; 
関連する問題