http://topic.csdn.net/u/20090827/12/d517e996-fbc9-4f38-ae7a-9bb990ef8b2c.html
怕分不够分给各位大大,另开一贴,分也可以多给些。哈哈!一个锦上添花的问题:
Mysql中是否有判断两个日期间隔多少工作日(排除周六周日和节日)的函数?如果没有的话,哪位大大有现成的函数,也望不吝赐教。:-)

解决方案 »

  1.   

    可以说没哪个数据库会有这个函数。因为法定假日是不固定日期的的,比如春节。
    一般来说常见的解决方法是create table calendar (cdate date PK,  workType int) // worktyep: 0 工作日, 7 周未, 9 法定假然后就简单了  select count(*) from calendar where cdate between date1 and date2 and worktype=0;
      

  2.   

    calendar  表,可以让你的用户在EXCEL中准备,不过要提醒他们每年要注意更新,还有法定假日调整的时候也要及时更新。
      

  3.   

    如果要严格区分开节假日的(节假日调班时,要变成周六、日要上班的;周1~5却要放假的):
    最好将这种特殊信息放进一个表A(date, work_type),假设work_type=0时,是周六、日上班的;work_type=1时,是周1~5却放假的;
    然后自己写个函数,传入开始日期和结束日期,在函数体里面对每天作循环,对每天用类似dayofweek()这样的函数来取得每周的第几天,若是周2~6,则与表A中work_type=1的比较剔除掉;若是周1、7,则与表A中work_type=0的比较增加。便循环得出开始日期和结束日期之间的工作日总天数.
      

  4.   

    周周六、日可以用WEEK函数取得,其它假日需要建立一张表,没有现成的