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

1qczuiv0  于 2021-06-24  发布在  Mysql
关注(0)|答案(4)|浏览(342)

我有一张table temp 在sqlfiddle上使用结构:

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

我希望获得本周的记录,例如,如果现在是2013年11月21日,我希望获得2013年11月18日至2013年11月24日(本周)的所有行
现在我看到下一个算法:
获取工作日
计算几天前是星期一
计算星期一的日期
计算未来日期星期日
提出日期要求
请告诉我,是否存在一个较短的算法(最好在mysql查询中)?
添加的问题是:为什么这个查询选择日期记录 17.11.2013(Sunday) - 23.11.2013(Saturday) 如何在日期上获得记录 18.11.2013(Monday) - 24.11.2013(Sunday) ?
查询:

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

谢谢!

3bygqnnd

3bygqnnd1#

使用 YEARWEEK() :

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

hgncfbus2#

使用 YEARWEEK . 如果你使用 WEEKOFYEAR 你也会得到前几年的记录。

SELECT id, name, date
FROM table
WHERE YEARWEEK(date)=YEARWEEK(NOW());
bzzcjhmw

bzzcjhmw3#

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

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();
}
vwoqyblh

vwoqyblh4#

你可以用下面的方法来做

SELECT DATE_FORMAT("2017-06-15", "%U");

获取周数(从00到53),其中(星期日第一天和星期一最后一天)
可能对你有用。
例子:

SELECT DISTINCT DATE_FORMAT('dates', '%U') AS weekdays FROM table_name;

相关问题