mysql算两个日期之间的工作日
2014-04-29 17:27
134 查看
-- 设定日期表起止参数
set @date1='2013/01/01';
set @date2='2015/12/31';
-- 建立日期表
CREATE TABLE calendar
(day DATE NOT NULL primary key,
holiday INT(11) NOT NULL DEFAULT '0'
dow int(11) not null);
truncate calendar;
-- 建立存储过程,以便循环给日期表加入数据
delimiter $$
drop procedure if exists test;
create procedure test()
begin
declare tday date;
set tday=@date1;
while (tday <= @date2) do
insert into calendar(day) values(tday);
set tday=date_add(tday,interval 1 day);
end while;
end$$
-- 调用存储过程加数据
call test();
-- 把星期几算进去
update calendar set dow=dayofweek(day)-1;
update calendar set dow=7 where dow=0;
set @date1='2014/04/01';
set @date2='2014/04/30';
-- 利用日期表来获取两个日期之间的工作日,
-- 如果hol=0,则判断是不是周6,7 是则不算,不是则算工作日数+1;
-- hol=1 是假期(不用管是不是周6,7);
-- hol=2 是工作日,工作日数+1
SELECT COUNT(*) FROM calendar
WHERE day BETWEEN @date1 AND @date2
AND ((DAYOFWEEK(day) NOT IN(1,7) AND holiday=0) or holiday=2);
set @date1='2013/01/01';
set @date2='2015/12/31';
-- 建立日期表
CREATE TABLE calendar
(day DATE NOT NULL primary key,
holiday INT(11) NOT NULL DEFAULT '0'
dow int(11) not null);
truncate calendar;
-- 建立存储过程,以便循环给日期表加入数据
delimiter $$
drop procedure if exists test;
create procedure test()
begin
declare tday date;
set tday=@date1;
while (tday <= @date2) do
insert into calendar(day) values(tday);
set tday=date_add(tday,interval 1 day);
end while;
end$$
-- 调用存储过程加数据
call test();
-- 把星期几算进去
update calendar set dow=dayofweek(day)-1;
update calendar set dow=7 where dow=0;
set @date1='2014/04/01';
set @date2='2014/04/30';
-- 利用日期表来获取两个日期之间的工作日,
-- 如果hol=0,则判断是不是周6,7 是则不算,不是则算工作日数+1;
-- hol=1 是假期(不用管是不是周6,7);
-- hol=2 是工作日,工作日数+1
SELECT COUNT(*) FROM calendar
WHERE day BETWEEN @date1 AND @date2
AND ((DAYOFWEEK(day) NOT IN(1,7) AND holiday=0) or holiday=2);
相关文章推荐
- mysql 表清空 ,查看sql在进程中的正在运行的sql ,log日志
- mysql-5.6+mysql-proxy构建主从复制与读写分离
- window下mysql表的修复
- c 访问 mysql
- mysql读写分离
- mysql ERROR 1045 (28000): Access denied for user解决方法
- ubuntu下软件安装及mysql的安装过程
- 安装MySQL (转)
- 更改mysql的存储过程
- mysql
- mysql索引详解,摘自《MySQL 5权威指南》
- mysql性能的检查和调优方法[转]
- mysql 新建用户及授权
- mysql更新一个表里的字段等于另一个表某字段的值
- MYSQL系列1_MySQL的安装,可视化工具的使用,以及建库建表等
- MySQL学习系列2--MySQL执行计划分析EXPLAIN
- mysql新增加用户
- 如何设置mysql在局域网中访问
- 在MySQL中,可以用 Limit 来查询第 m 列到第 n 列的记录
- mysql卸载