MySQL:如何选择本周的记录?

31 mysql date

tempsqlfiddle上有结构表:

id(int 11 primary key)
name(varchar 100)
name2(varchar 100)
date(datetime)
Run Code Online (Sandbox Code Playgroud)

我想在本周获得记录,例如现在21.11.2013我希望所有行于2013年11月18日至2013年11月24日(周)

现在我看到下一个算法:

  1. 获得平日
  2. 计算星期一前几天
  3. 计算星期一的日期
  4. 计算周日的未来日期
  5. 在约会上提出要求

请告诉我,是否存在较短的算法(最好在查询MySQL中)?

ADD问题是:为什么此查询 选择日期记录17.11.2013(Sunday) - 23.11.2013(Saturday)以及如何获取日期记录18.11.2013(Monday) - 24.11.2013(Sunday)

查询:

select * from temp
where yearweek(`date`) = yearweek(curdate())
Run Code Online (Sandbox Code Playgroud)

谢谢!

jue*_*n d 68

用途YEARWEEK():

SELECT *
FROM   your_table
WHERE  YEARWEEK(`date`, 1) = YEARWEEK(CURDATE(), 1)
Run Code Online (Sandbox Code Playgroud)

  • 使用`yearweek()`,您可以指定一周开始的其他参数. (4认同)

Ram*_*esh 11

使用YEARWEEK.如果您使用,WEEKOFYEAR您也将获得前几年的记录.

SELECT id, name, date
FROM table
WHERE YEARWEEK(date)=YEARWEEK(NOW());
Run Code Online (Sandbox Code Playgroud)

  • 使用YEARWEEK ..如果你使用WEEKOFYEAR,你也会得到前几年的记录.编辑我的ans (5认同)

gan*_*nji 6

要选择日、周和月的记录,请使用以下方式:

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();
}
Run Code Online (Sandbox Code Playgroud)