作者热门文章
- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
您如何最轻松地计算出多少,例如使用 MySQL 一个月还剩周一(今天算)?
在一个查询中解决一周中所有天数的解决方案的奖励积分。
期望的输出(2010 年 8 月 17 日星期二运行):
dayOfWeek left
1 2 -- Sunday
2 2 -- Monday
3 3 -- Tuesday (yep, including today)
4 2 -- Wednesday
5 2 -- Thursday
6 2 -- Friday
7 2 -- Saturday
最佳答案
创建一个日期表,其中包含您关心的每一天的一行(比如 2000 年 1 月 1 日 - 2099 年 12 月 31 日):
create table dates (the_date date primary key);
delimiter $$
create procedure populate_dates (p_start_date date, p_end_date date)
begin
declare v_date date;
set v_date = p_start_date;
while v_date <= p_end_date
do
insert ignore into dates (the_date) values (v_date);
set v_Date = date_add(v_date, interval 1 day);
end while;
end $$
delimiter ;
call populate_dates('2000-01-01','2099-12-31');
然后您可以运行这样的查询以获得所需的输出:
set @date = curdate();
select dayofweek(the_date) as dayOfWeek, count(*) as numLeft
from dates
where the_date >= @date
and the_date < str_to_date(period_add(date_format(@date,'%Y%m'),1),'%Y%m')
group by dayofweek(the_date);
这将排除当月出现 0 次的星期几。如果您想查看这些,您可以创建另一个包含星期几 (1-7) 的表格:
create table days_of_week (
id tinyint unsigned not null primary key,
name char(10) not null
);
insert into days_of_week (id,name) values (1,'Sunday'),(2,'Monday'),
(3,'Tuesday'),(4,'Wednesday'),(5,'Thursday'),(6,'Friday'),(7,'Saturday');
然后使用左连接到日期表查询该表:
select w.id, count(d.the_Date) as numLeft
from days_of_week w
left outer join dates d on w.id = dayofweek(d.the_date)
and d.the_date >= @date
and d.the_date < str_to_date(period_add(date_format(@date,'%Y%m'),1),'%Y%m')
group by w.id;
关于mysql - 例如数量一个月剩下的星期一,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3499864/
案例研究如下, Tasks Table has an Order ID. 1 Task is belonged to an Order Table. An Order can have many ta
我有一个 fiddle ,如下所示,在位置 4(图片 4、图片 5、图片 6),我想要交叉淡入淡出(淡入/淡出) 要发生的图片库。目前该位置只显示图6。 https://jsfiddle.net/k0
我是一名优秀的程序员,十分优秀!